View 如何在JSON视图中完全绑定组合框

View 如何在JSON视图中完全绑定组合框,view,model,sapui5,View,Model,Sapui5,我试图在JSON视图中用模板绑定一个完整的组合框。我将模型绑定到视图,使用我在控制器中创建的模板绑定它是没有问题的。但我如何才能做到这一点,只有在视图 我介绍了这个示例,它使用xml视图: 我不得不屏蔽和压缩代码,所以可能视图在这种形式下工作不正常 以下是我的(浓缩)观点: 这是我的模型: screenModel : { ItemsForMyCbo : [ { Key : "1", Valu

我试图在JSON视图中用模板绑定一个完整的组合框。我将模型绑定到视图,使用我在控制器中创建的模板绑定它是没有问题的。但我如何才能做到这一点,只有在视图

我介绍了这个示例,它使用xml视图:

我不得不屏蔽和压缩代码,所以可能视图在这种形式下工作不正常 以下是我的(浓缩)观点:

这是我的模型:

screenModel : {

        ItemsForMyCbo : [
            {
                Key : "1",
                Value : "Val1"
            },
            {
                Key : "2",
                Value : "Val2"
            },
            {
                Key : "3",
                Value : "Val3"
            }
        ]
    }
以及控制器的一部分:

var oModel = new sap.ui.model.json.JSONModel()
    oModel.setData(this.screenModel);

    this.getView().setModel(oModel, "ModelName");

您的绑定需要进行以下调整。请参阅以了解绑定语法

"items": {
    "path": "ModelName>/ItemsForMyCbo",
    "template": {
        "Type": "sap.ui.core.ListItem"
        "text": "{ModelName>Value}",
        "key": "{ModelName>Key}",
        "enabled": true,
        "icon": "",
        "additionalText": "",
    }

}

最后,我能够绑定完整的组合框

{
"items": {
    "path": "ModelName>/ItemsForMyCbo",
    "template": {
        "Type": "sap.ui.core.ListItem",
        "text": "{ModelName>Value}",
        "key": "{ModelName>Key}"
    }
},
"Type": "sap.ui.commons.ComboBox",
"width": "150px",
"id": "myCbo"
}

在模板属性中使用绑定(大括号)而不是在combobox路径属性中使用绑定(大括号),这有点让人困惑,但您使用的绑定是错误的。在path属性中,绑定语法为“忽略”。我假设path属性已经在绑定上下文中,您不必使用大括号。看一看我的答案我把答案搞定了。这是一个老习惯,因为我只在到处都使用花括号的地方使用XML视图。因此,将xml转换为jsonIt是一种尝试和错误,并没有那么令人困惑。。。该属性已经被调用为
path
,因此API期望的是一个正确的路径,而不是在花括号中写入的内容。但在XML视图中,您只有纯字符串,没有
path
属性(您也可以在XML视图中使用path,但这是另一回事)。所以他们用花括号来区分路径和基本字符串。听起来很简单。
{
"items": {
    "path": "ModelName>/ItemsForMyCbo",
    "template": {
        "Type": "sap.ui.core.ListItem",
        "text": "{ModelName>Value}",
        "key": "{ModelName>Key}"
    }
},
"Type": "sap.ui.commons.ComboBox",
"width": "150px",
"id": "myCbo"
}