如何确保sap.m.select充满数据

时间:2014-09-30 06:03:19

标签: sapui5

我有一个sap.m.select,它在应用程序的开始时加载了数据。 如果select控件包含数据,我只能前进。 我想确保加载数据,然后启用“Go”按钮。

我检查了列表控件是否有“attachUpdateFinished”。我们是否有类似的选择。 还是有其他方法可以做到吗?

先谢谢。

2 个答案:

答案 0 :(得分:0)

我想你的sap.m.Select控件绑定到模型?

在这种情况下,您可以在模型的attachRequestCompleted事件处理程序中启用该按钮:

oModel.attachRequestCompleted(function (oEvent) {
    oYourGoButton.setEnabled(true);
});

答案 1 :(得分:0)

将Button enabled属性绑定到与sap.m.Select相同的模型,并在控制器中创建以下自定义格式化程序:

enableFormatter:function(items){
    if(items&&items.length>0) return true;
    return false;
}

请运行并检查代码段。

<script src="https://openui5.hana.ondemand.com/resources/sap-ui-core.js" id="sap-ui-bootstrap" data-sap-ui-theme="sap_bluecrystal" data-sap-ui-libs="sap.m,sap.ui.commons" data-sap-ui-xx-bindingSyntax="complex"></script>
<!-- define an XMLView - normally done in a separate file -->
<script id="view1" type="sapui5/xmlview">
    <mvc:View xmlns:core="sap.ui.core" xmlns:layout="sap.ui.commons.layout" xmlns:mvc="sap.ui.core.mvc" xmlns="sap.m" controllerName="my.own.controller" xmlns:html="http://www.w3.org/1999/xhtml">
        <Select items="{/items}">
            <core:Item key="{name}" text="{value}" />
        </Select>
        <Button text="Go" enabled="{path:'/items',formatter:'.enableFormatter'}" />

        <Select items="{/itemsempty}">
            <core:Item key="{name}" text="{value}" />
        </Select>
        <Button text="Go" enabled="{path:'/itemsempty',formatter:'.enableFormatter'}" />

    </mvc:View>
</script>


<script>
    sap.ui.controller("my.own.controller", {

        onInit: function() {
            var data = {
                items: [{
                    name: 1,
                    value: 1
                }, {
                    name: 2,
                    value: 2
                }],
                itemsempty: []
            };
            var oModel = new sap.ui.model.json.JSONModel();
            oModel.setData(data);
            this.getView().setModel(oModel);
        },

        enableFormatter: function(items) {
            if (items && items.length > 0) return true;
            return false;
        }


    });


    var myView = sap.ui.xmlview("myView", {
        viewContent: jQuery('#view1').html()
    }); // 
    myView.placeAt('content');
</script>

</head>

<body class='sapUiBody'>
    <div id='content'></div>
</body>