需要像这样放置json数据
{
"marcas":[
{
"__metadata":{
"id":"data id",
"uri":"data url",
"type":"data type"
},
"Codcard":"01",
"Descript":"MasterCard"
},
]
}
进入这样的选择输入...
var oSelectMarca = new sap.m.Select({
items: {
path: "marcas",
template: new sap.ui.core.ListItem({
key: '{Kunnr}',
text: '{Descrip}'
}),
templateShareable: true
},
selectedKey: '{Marca}'
});
我正在尝试将其保存到模型中,然后如上所示调用它,
var oModelListMarcasTarjeta = new sap.ui.model.json.JSONModel();
var marcas = [{
Descrip: "",
Kunnr: ""
}];
var sUrlCard = "data url";
var oDataModelCards = new sap.ui.model.odata.ODataModel(sUrlCard, true);
oDataModelCards.read("dataCollection", {
async: false,
success: function(oData, response) {
$.each(oData.results, function(i, val) {
marcas.push(val);
});
oModelListMarcasTarjeta.setData({
'cards': marcas
});
sap.ui.getCore().setModel(oModelListMarcasTarjeta, "marcas");
}
});
但不起作用,你知道什么是错的吗?
如果我直接将模型设置为选择输入,当然可以,但是由于某种原因,输入未设置列表中所选项目的值。
答案 0 :(得分:0)
我可以通过将模型直接设置为输入来解决
var oSelectMarca = new sap.m.Select({
items: {
path: "/cards",
template: new sap.ui.core.ListItem({
key: '{Kunnr}',
text: '{Descrip}'
}),
templateShareable: true
},
selectedKey: '{Marca}'
});
oSelectMarca.setModel(oModelListMarcasTarjeta);
答案 1 :(得分:0)
上述版本的问题是您为模型marcas
命名,但是在使用此模型绑定控件时没有提及它。
当您不为模型提供任何名称时(如您添加的答案),它会选择默认模型,如您在第二种情况下设置模型时所看到的那样。
如果删除模型名称,则相同的逻辑将起作用:
sap.ui.getCore().setModel(oModelListMarcasTarjeta);
但是,将模型设置在核心上根本不值得赞赏。始终根据需求在视图或控件上设置模型。
答案 2 :(得分:0)
由于您具有模型名称,因此也需要在绑定路径中使用它
假设您有来自后端的以下JSON数据。
JSON数据
{
'cards': [{
'Descrip': "",
'Kunnr': ""
}, {
'Descrip': "ss",
'Kunnr': "asf"
}, {
'Descrip': "fff",
'Kunnr': "asdf"
}, {
'Descrip': "fas",
'Kunnr': "asdf"
}, {
'Descrip': "asdfa",
'Kunnr': "asdfwer"
}]
}
绑定
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");
//Use 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}'
})
}
});