簡體   English   中英

如何解析json對象屬性以將其綁定到控件

[英]How to parse a json object property to bind it to a control

我在名為details的模型中具有以下JSON數據。 我只希望表中具有key:“ month”屬性的對象。 為此,控件中有一個filter屬性

   oData
   details:
   Array[4]
   0:Object
   1:Object
   2:Object
    editable:false
    key:"year"
    removeable:false
    value:"2000"
   3:Object
    editable:false
    key:"event"
    removeable:false
    value:"Day: TRUE, Night:False"
   4:Object
    editable:false
    key:"month"
    removeable:false
    value:"Time: August, Valid:True,from 2016"

控制如下

createContent : function(oController) {
 return new sap.m.Table({
   columns: [
               new sap.m.Column({
                header: new sap.m.Text({
                    text: 'value',
                })
            }),
   items: {
            path: '/details',
            filters: [ new sap.ui.model.Filter("key","EQ","month") ], //only display months
            template: new sap.m.ColumnListItem({
                cells: [
                        new sap.m.Text({
                        text: '{value}',
                    }),

現在在用戶界面中,我只有一列顯示

          Time: August, Valid:True,from 2016

我想在2列中顯示值。 我無法使用文本“ {value.time}”或文本“ {value.valid}”制作商品,

數據"Time: August, Valid:True,from 2016""Time: August, Valid:True,from 2016"是一個字符串。 它的內容不是有效的json。

但是您可以使用格式化程序來提取字符串的所需部分:

createContent : function(oController) {
 return new sap.m.Table({
   columns: [
               new sap.m.Column({
                header: new sap.m.Text({
                    text: 'Time',
                })
            }),
               new sap.m.Column({
                header: new sap.m.Text({
                    text: 'Valid',
                })
            }),
   items: {
            path: '/details',
            filters: [ new sap.ui.model.Filter("key","EQ","month") ], //only display months
            template: new sap.m.ColumnListItem({
                cells: [
                        new sap.m.Text({
                        text: {path: "value", formatter: oController.extractTimeFromValue},
                    }),
                        new sap.m.Text({
                        text: {path: "value", formatter: oController.extractValidFromValue},
                    }),

像這樣在控制器中添加格式化程序功能:

extractTimeFromValue:function(value){
  var match = value.match(/Time:\s*(\w+)/);
  if (match){
    return match[1]; //return the first group (\w+)
  }
  return null;
},
extractValidFromValue:function(value){
  var match = value.match(/Valid:\s*(\w+)/);
  if (match){
    return match[1]; //return the first group (\w+)
  }
  return null; 
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM