我正在尝试将一些JSON数据绑定到一个树液选择列表中,并且工作正常,问题出在我实际上选择列表中的一个选项时,由于某种原因,未选择该选项。输入字段仅保留为空白
var oModelListMarcasTarjeta = new sap.ui.model.json.JSONModel();
oModelListMarcasTarjeta.setData({ //for implementation I am setting the data like this
'cards': [{
'Descrip': "",
'Kunnr': ""
}, {
'Descrip': "ss",
'Kunnr': "asf"
}, {
'Descrip': "fff",
'Kunnr': "asdf"
}, {
'Descrip': "fas",
'Kunnr': "asdf"
}, {
'Descrip': "asdfa",
'Kunnr': "asdfwer"
}]
});
sap.ui.getCore().setModel(oModelListMarcasTarjeta, "marcas");
//Model name for binding
var oSelectMarca = new sap.m.Select({
items: {
path: "marcas>/cards",
template: new sap.ui.core.ListItem({
key: '{marcas>Kunnr}',
text: '{marcas>Descrip}'
})
},
selectedKey: '{Kunnr}', //Here's my problem
});
});
实际上,如果我从selectedKey
中删除了new sap.m.Select
,则我选择的选项可以正常工作,并且它们在输入中显示为选中状态,但是一旦我添加属性selectedKey
,它就会损坏,无法选择任何选项。
知道为什么会发生吗?
答案 0 :(得分:0)
在您的sap.m.Select
-selectedKey
中,您必须指定要从JSON对象中选择哪个键,现在您正在尝试选择属性Kunnr
,这就是破坏性您的代码。如果您从对象中选择一个唯一属性,则也是首选,我可以看到JSON中有几个条目具有相同的Kunnr
。
注释:
selectedKey
,则第一项是
已选择。selectedKey
无效或丢失会导致严重的功能问题
sap.m.Table
,当在sap.m.Select
中使用sap.m.Table
时
列。按照您的示例:
我的控制器:
var oModelListMarcasTarjeta = this.getView().getModel("testModel");
oModelListMarcasTarjeta.setData({
"cards": [{
"Descrip": "",
"Kunnr": ""
}, {
"Descrip": "ss",
"Kunnr": "asf"
}, {
"Descrip": "fff",
"Kunnr": "asdf"
}, {
"Descrip": "fas",
"Kunnr": "asdf"
}, {
"Descrip": "asdfa",
"Kunnr": "asdfwer"
}]
});
我的XML视图:
<Select forceSelection="false" selectedKey="{testModel>/cards/4/Kunnr}"
items="{ path: 'testModel>/cards',
sorter: { path: 'Kunnr' } }">
<core:Item key="{testModel>Kunnr}" text="{testModel>Descrip}"/>
</Select>
请注意:selectedKey="{testModel>/cards/4/Kunnr}"
,这意味着将默认选择Json对象中的第5个条目。您还应该设置forceSelection="false"
,以提高与数据绑定的互操作性。
希望这会有所帮助!
答案 1 :(得分:0)
您还必须指定模型路径
var oSelectMarca = new sap.m.Select({
items: {
path: "marcas>/cards",
template: new sap.ui.core.ListItem({
key: '{marcas>Kunnr}',
text: '{marcas>Descrip}'
})
},
selectedKey: '{marcas>/cards/1/Kunnr}', //Your solution
});
答案 2 :(得分:-1)
我通过使用sap核心从外部访问属性来解决它:
var myvar = sap.ui.getCore().getModel("marcas");
var selectedKey= myvar.getProperty('/cards/Kunnr');