SAPUI5:DataBinding to List

时间:2016-06-23 13:13:49

标签: javascript xml data-binding sapui5

我有这个XML列表:

<List id="myList"
            items="{/Items}">
            <items>
                <ObjectListItem title="{ID}" type="Active" press="onListItemPressed"
                            number="{ parts:[{path:'Price'},{path:'Currency'}],
                            type: 'sap.ui.model.type.Currency', formatOptions: {showMeasure: false} }"
                    numberUnit="{Currency}">
                    <firstStatus>
                        <ObjectStatus
                            text="{path:'End',
                            formatter: '.formatter.getCountdown'}"
                            state="{path:'End', formatter:
                            '.formatter.getCountdownStatus'}" />
                    </firstStatus>
                    <attributes>
                        <ObjectAttribute text="{i18n>GlobalType}: {Format}" />
                    </attributes>
                </ObjectListItem>
            </items>
        </List>

目前我用JS绑定数据:

var objectTemplate = new sap.m.ObjectListItem({
                title : "{ID}",
                number : "{ parts:[{path:'Price'},{path:'Currency'}], type: 'sap.ui.model.type.Currency', formatOptions: {showMeasure: false} }",
                numberUnit :"{Currency}",
                type : sap.m.ListType.Active,
                press : this.onListItemPressed,

                attributes : [new sap.m.ObjectAttribute({
                          text : "{i18n>GlobalType}: {Format}"
                    })],
                firstStatus : new sap.m.ObjectStatus({
                                           text : "{path:'End'}",
                                           status : "{path:'End'}" 
                })
            });


oList.bindAggregation("items", {
                path : "/Items",
                filters: [ new sap.ui.model.Filter("Type", sap.ui.model.FilterOperator.EQ, oArgs.TypeID ) ],
                template : objectTemplate
      }); 

我想使用XML列表而不是JS创建列表。我可以将bindAggregation与XML模板一起使用吗?

1 个答案:

答案 0 :(得分:0)

您在第一个XML视图示例中以正确的方式执行此操作(您必须绑定此示例中完成的items属性)。 但在这种情况下,您必须从XML视图中删除<items>节点,因为您要使用模板工厂而不是手动定义项目。

<List id="myList"
        items="{/Items}">
            <ObjectListItem title="{ID}" type="Active" press="onListItemPressed"
                        number="{ parts:[{path:'Price'},{path:'Currency'}],
                        type: 'sap.ui.model.type.Currency', formatOptions: {showMeasure: false} }"
                numberUnit="{Currency}">
                <firstStatus>
                    <ObjectStatus
                        text="{path:'End',
                        formatter: '.formatter.getCountdown'}"
                        state="{path:'End', formatter:
                        '.formatter.getCountdownStatus'}" />
                </firstStatus>
                <attributes>
                    <ObjectAttribute text="{i18n>GlobalType}: {Format}" />
                </attributes>
            </ObjectListItem>
    </List>