[英]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.