我正在尝试制作自己的模型而我不知道如何:
但我只能看到:
var person = new demobrowser.demo.data.model.Person();
但不要显示它来自何处或如何制作。所以本教程没用;
为什么我想要一个自定义模型? (我想只为模型定制类,知道结构并在其中放置自定义方法)
我有:[{a: 2, b: 4}, {a: 1, b: 9}];
我想把它放在一个列表上,但是使用:
var model = this._model = new qx.data.Array([{id: 1, name: "Victor"}]);
this._listController = new qx.data.controller.List(model, this._list, 'name');
不起作用:真正的错误是SingleValueBinding:
“绑定属性”+属性+“对象”+源+“不 可能:没有活动。 “;
找不到活动。
控制台中的错误:
未捕获的qx.core.AssertionError:错误
答案 0 :(得分:4)
使用qx.data.marshal.Json.createModel
- >您的代码应如下所示:
var model = this._model = qx.data.marshal.Json.createModel([{id: 1, name: "Victor"}]);
this._listController = new qx.data.controller.List(model, this._list, 'name');
- >将两个模型元素映射到同一属性(“a”和“secondA”):
var data = [{a: 2, b: 4}, {secondA: 1, b: 9}];
var delegate = {
getPropertyMapping : function(property, properties) {
if (property === "secondA") {
return "a";
}
return property;
}
};
var marshaler = new qx.data.marshal.Json(delegate);
marshaler.toClass(data);
var model = marshaler.toModel(data);
this.assertEquals("2", model.toArray()[0].getA());
this.assertEquals("1", model.toArray()[1].getA());
看看at my Playground example或the unit test of the JSON marshaler(搜索“testGetPropertyMapping”)
答案 1 :(得分:1)