2012-03-09 65 views
2

我试图使自己的模型,我不知道如何:如何在Qooxdoo中创建自定义模型? (对于列表)

我一直期待在这里http://demo.qooxdoo.org/current/demobrowser/index.html?qxenv:demobrowser.withTests:true#data~ListControllerWithObjects.html

,但我只能看到:

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:

"Binding property " + propertyname + " of object " + source + " not possible: No event available. ";

它无法找到该事件。

在控制台中的错误:

Uncaught qx.core.AssertionError: error

+1

交叉后从邮件的Qooxdoo名单,HTTP://的Qooxdoo .678.n2.nabble.com/How-to-create-my-own-model-I-can-find -tp7357709p7357709.html – ThomasH 2012-03-10 00:01:31

回答

1

答案实际的问题是在这里:

​​

+0

谢谢...我无法确认它的工作原理,因为我要离开qooxdoo,但我会接受因为这是我当时想要的。 – 2013-07-15 08:21:06

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 examplethe unit test of the JSON marshaler(搜索 “testGetPropertyMapping”)

+1

我不明白qooxdoo是如何根据您给出的模型将名称归于模型的在这个例子中。如果我有两个模型具有相同的数据但名称不同?它如何映射它们?奇怪,但感谢您的回答 – 2012-05-25 10:51:17

+1

模型的名称基于模型键的哈希。您可以使用http://demo.qooxdoo.org/current/apiviewer/#qx.data.marshal.IMarshalerDelegate根据给定属性(IMarshalerDelegate#getModelClass())设置显式模型类。 – 2012-05-25 12:30:57

+0

你能给我一个如何真正做的例子,从api我无法弄清楚如何..谢谢;) – 2012-07-16 08:01:21

相关问题