如何在sapui5 XML视图中显示控制器变量?

时间:2016-01-13 15:53:42

标签: javascript sapui5

如何在sapUI5 XML视图中显示控制器变量?

到目前为止,我有一个控制器

sap.ui.define([
    "sap/ui/core/mvc/Controller"
], function (Controller) {
    "use strict";

    return Controller.extend("sap.ui.demo.myApp.myController", {
        onInit: function () {
            this.myName = "Jon Doe";
        }
    });
});

XML-view

<mvc:View
    controllerName="sap.ui.demo.myApp.myController"
    xmlns="sap.m">
<Panel>
    <content>
        <Label text="bind controller myName to this label"/>
    </content>
</Panel>

如果不使用模型绑定,这可能吗?如果不是:最聪明(最短)的方法是什么?

2 个答案:

答案 0 :(得分:7)

为什么要避免模型绑定?模型绑定可能不是最短的,但典型的简短方法是:

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

    return Controller.extend("sap.ui.demo.myApp.myController", {
        onInit: function () {
            this.myName = "Jon Doe";
            var oViewModel = new JSONModel({myName: this.myName});
            this.getView().setModel(oViewModel,"view");
        }
    });
});

和视图中的绑定:

<mvc:View
    controllerName="sap.ui.demo.myApp.myController"
    xmlns="sap.m">
<Panel>
    <content>
        <Label text="{view>/myName}"/>
    </content>
</Panel>

答案 1 :(得分:3)

我不认为可以在视图中使用控制器变量。

但是这个问题有一个快捷方式:在呈现视图后,从视图中获取所需的控件id并将任何值设置为控件:

return Controller.extend("sap.ui.demo.myApp.myController", {
    onAfterRendering: function () {
        sap.ui.getCore().byId(this.createId("<label's id>")).setText("Jon Doe");
    }
});

当然,&#34; Jon Doe&#34;上例中的文本可以是变量:

var sText = "Jon Doe";
sap.ui.getCore().byId(this.createId("<label's id>")).setText(sText);