如何在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>
如果不使用模型绑定,这可能吗?如果不是:最聪明(最短)的方法是什么?
答案 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);