SAP UI5:绑定错误

时间:2014-02-25 16:18:18

标签: sapui5

尽管在SAP HCM开发方面经验丰富,但我刚刚开始学习UI5(使用eclipse),所以如果我的问题有点基础,请提前道歉......

我正在尝试创建数据绑定(基于UI5 rockstar的示例)  DJ亚当斯)但由于某种原因,没有结果。

  1. 在我的控制器中,我输入了以下代码(在onInit函数中)来创建数据并使其可用:

    onInit: function() {
    var cities = [ { id: "A1", name: "Kobe" },
               { id: "A2", name: "Hiroshoma" }
    ];
            var oModel = new sap.ui.model.json.JSONModel();
            oModel.setData(cities);
    
            sap.ui.getCore().setModel(oModel);
    
    
    
    },
    
  2. 在我看来,我尝试使用以下代码绑定数据:                                                                          

                            </IconTabFilter>
                            <IconTabFilter
                                binding="{/cities/0}"
                                text="{name}"
                                icon="sap-icon://group"
                                design="Horizontal">
    
                            </IconTabFilter>
                            <IconTabFilter
                                binding="{/cities/1}"
                                text="{name} ({id})"
                                icon="sap-icon://group"
                                design="Horizontal">
    
                            </IconTabFilter>
    
                        </items>
                    </IconTabBar>
    </content>
    </Page>
    </core:View>
    
  3. 在我的输出中,所有元素都正确显示,但是我没有得到我在模型中初始化的值。但是,我没有收到任何错误

  4. 我的问题: 1.你能提供一些帮助/指导,看看我在哪里犯了错误吗? 2.什么是检测数据绑定问题的最简单方法(调试器,其他提示)?

    非常感谢您的指导,

    汤姆

3 个答案:

答案 0 :(得分:1)

错误确实存在于您的绑定中。 虽然您有一个变量'cities',但您的json上下文以'id'开头。 您可以更新您的json模式以使根元素'cities',或将其设置为您的模型声明:

.setModel({cities:oModel})

至于调试,我更喜欢标准的Google Chrome浏览器工具。它允许手表,断点和(小)实时代码更改

答案 1 :(得分:0)

请尝试使用模板,而不是绑定单个元素,您可以使用模板将数组绑定到单个元素。 例如:

<List
items="{/ProductCollection}"
headerText="Products">
<items>
  <ObjectListItem
    title="{Name}"
    type="Active"
    press="onListItemPress"
    number="{Price}"
    numberUnit="{CurrencyCode}">
    <firstStatus>
      <ObjectStatus
        text="Overweight"
        state="Error" />
    </firstStatus>
    <secondStatus>
      <ObjectStatus
        text="In Stock"
        state="Success" />
    </secondStatus>
    <attributes>
      <ObjectAttribute text="{WeightMeasure} {WeightUnit}" />
      <ObjectAttribute text="{Width} x {Depth} x {Height} {DimUnit}" />
    </attributes>
  </ObjectListItem>
</items>

[实例:https://sapui5.hana.ondemand.com/sdk/explored.html#/sample/sap.m.sample.ObjectListItem/code]

如果您希望对数据进行更精细的控制,那么您可以使用键值对设置多个模型。

示例:

sap.ui.getCore().setModel("key",oModel);

并获取值:

sap.ui.getCore().getModel("key");

答案 2 :(得分:0)

您创建模型的方法并不安静。变量城市不是对象而是数组。您可以将数据设置为建模:

onInit: function() {
var cities ={ "cities": [{ "id": "A1", "name": "Kobe" },
                     { "id": "A2", "name": "Hiroshoma" }
                     ]}
    var oModel = new sap.ui.model.json.JSONModel();

    oModel.setData(cities);

    sap.ui.getCore().setModel(oModel);

},

或者您可以设置属性:

var cities = [ { id: "A1", name: "Kobe" },
       { id: "A2", name: "Hiroshoma" }
];
    var oModel = new sap.ui.model.json.JSONModel();

    oModel.setProperty("/cities", cities);

    sap.ui.getCore().setModel(oModel);

你还必须正确绑定你的xml。您可以按照SapUi5探索的列表项目模板或开发人员指南进行操作