为什么我的列表项中没有数据?

时间:2017-05-17 10:20:35

标签: sapui5

我正在尝试使用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);
    }

});
});

输出: output

1 个答案:

答案 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>