我有一个显示在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