我正在尝试使用List控件并从json模型将数据绑定到它。 我从我的json模型中获取初始属性,以便在我的List中显示如下:
<List headerText = "{/question}" ></List>
但是我的json模型还有一个由answerText属性组成的答案集合。你可以在我的控制器中看到这个模型,如下面的App.controller.js。
问题:每当我尝试加载页面时,headerText都会显示在json模型中存储的文本中,但不会在我的列表中显示该集合,而是表示没有数据。
请检查我的代码并给我一个合适的解决方案。
App.view.xml
<mvc:View xmlns:mvc="sap.ui.core.mvc" xmlns="sap.m" xmlns:l="sap.ui.layout" xmlns:f="sap.ui.layout.form" xmlns:core="sap.ui.core"
displayBlock="true" controllerName="opensap.examples.controller.App" height="100%">
<Page title="List Page">
<content>
<List headerText="{/question}" id="myList" items="{ path: '/answers' }">
<items>
<InputListItem label="{answerText}">
<CheckBox></CheckBox>
</InputListItem>
</items>
</List>
<Button press="load" text="Click Me"></Button>
</content>
</Page></mvc:View>
App.controller.js
sap.ui.define([
"sap/ui/core/mvc/Controller",
"sap/ui/model/json/JSONModel"], function(Controller, JSONModel) {
var oData = {
"question": "Which pet do you like from the following?",
"answers": [{
"answerText": "Cats"
}, {
"answerText": "Rabbits"
}, {
"answerText": "Dogs"
}, {
"answerText": "Hamsters"
}]
};
var oModel;
Controller.extend("opensap.examples.controller.App", {
onInit: function() {
oModel = new JSONModel();
oModel.setData(oData);
this.getView().setModel(oModel);
},
load: function() {
console.log(oModel);
}
});
});
答案 0 :(得分:0)
请尝试以下更改,它可能会对您有所帮助
在控制器中,
var oModel = new sap.ui.model.json.JSONModel();
oModel.setData(oData);
this.getView().setModel(oModel, "myModel");
在xml视图中,
<List headerText="{myModel>/question}" id="myList" items="{ path: 'myModel>/answers' }">
<items>
<InputListItem label="{myModel>answerText}">
<CheckBox></CheckBox>
</InputListItem>
</items>
</List>