无法将模型中的属性绑定到XML视图上的控件

时间:2017-10-23 16:33:47

标签: xml sapui5 model-binding hana

我尝试在新版本的Openui5(1.48)上迁移我的应用程序,并且在模型绑定方面存在一些问题。我正在使用sap.ui.getCore().setModel(oModel, "local")进行模型声明,当我尝试将某些控件绑定到此模型中的值时,如下所示:

<Text text="{local>/count}"/>

值未显示但如果我将获得此模型,请将其设置为在控制器中查看并从xml中删除>

var oModel = sap.ui.getCore().getModel("local");
this.getView().setModel(oModel);

XML

<Text text="{/count}"/>
一切都会好起来的。 也许有人遇到过类似的问题,或者我的代码有问题?

修改

我用 @boghyon

建议的解决方案解决了这个问题
new sap.ui.core.ComponentContainer({
    //...,
    propagateModel: true
})

2 个答案:

答案 0 :(得分:1)

我认为问题可能是你如何创建 JSON模型!

试试这个。 控制器

sap.ui.define(["sap/ui/core/mvc/Controller",
               "sap/ui/model/json/JSONModel",],
               function(Controller,JSONModel) {
    "use strict";
    return Controller.extend("com.stackoverflow.testUI5", {

        onInit:function(){

            var oData = {
                    count:"1"
            };
        var oModel = new JSONModel(oData);
            sap.ui.getCore().setModel(oModel , "local")
            //this.getView().setModel(oModel ,"local");

        }
});
});

XML视图

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<mvc:View controllerName="com.stackoverflow.testUI5"
     xmlns:mvc="sap.ui.core.mvc" 
    xmlns:core="sap.ui.core"  xmlns="sap.m" >

            <Text text="{local>/count}"/>

</mvc:View>

此代码段将有效。

答案 1 :(得分:1)

您必须在应用中使用Component。在这种情况下,核心模型不会自动传播给ComponentContainer的子项,这就是您的Text控件不知道模型"local"的原因。

"{/count}"的工作原因是因为您在视图上显式设置了模型而没有任何模型名称。如果模型没有名称,则它是默认模型,并且必须在绑定路径中省略>

要详细了解设置模型的位置,请查看我对类似问题的回答:https://stackoverflow.com/a/42251431/5846045