我有一個顯示在sap.m.Input控制員工姓名如下是否有可能在UI5結合sap.ui.base.ManagedObject到視圖
<mvc:View
controllerName="com.naveen.test.managedobject.controller.Employee"
xmlns="sap.m"
xmlns:mvc="sap.ui.core.mvc"
height="100%">
<Input
value="{/name}"
liveChange="onDataChange"
type="Text" />
</mvc:View>
而且視圖模型類如此處所示基於hint.。
sap.ui.define(["sap/ui/base/ManagedObject"],
function(ManagedObject) {
"use strict";
var Employee = ManagedObject.extend("com.naveen.test.managedobject.model.Employee", {
metadata : {
properties : {
name : { type : "string", defaultValue:"" }
}
},
set name(iName) {
this.setName(iName);
},
get name() {
return this.getName();
}
});
return Employee;
});
和Controller我只是創造了員工模型一個對象,並將其設置爲下面的視圖。
sap.ui.define(["sap/ui/core/mvc/Controller",
"sap/ui/model/json/JSONModel",
"com/naveen/test/managedobject/model/Employee"],
function(Controller,JSONModel,Employee) {
"use strict";
return Controller.extend("com.naveen.test.managedobject.controller.Employee", {
onInit : function() {
var employee = new Employee({
name : "Naveen"
});
this.model = new JSONModel(employee);
this.getView().setModel(this.model);
},
onDataChange : function(oEvent) {
var value = oEvent.getParameter("value");
console.log("Value in control", value);
console.log("Value in model", this.model.getData().getName());
}
});
});
但是,該視圖並未從模型中獲取數據,並且模型中的任何更改都未更新模型。在這個方法中是否有任何錯誤,或者我們如何將託管對象的屬性綁定到視圖。
據我所知,JSONModel接受JSON對象(如人們所預料的)內部數據,而不是管理對象:) –
如果你不希望實施這樣的情景自己的自定義模式,有一個名爲即將到來的模型[ 「ManagedObjectModel」](https://github.com/SAP/openui5/blob/master/src/sap.ui.core/src/sap/ui/model/base/ManagedObjectModel.js),它目前是私有的。試一試,並分享一些反饋[在這裏](https://www.slideshare.net/andreaskunz/ui5con-2017-create-your-own-ui5-controls-whats-coming-up)Andreas Kunz也解釋如何使用它。 – boghyon