2011-05-30 88 views
0

我想创建一个自定义复杂对象的控制器,但有嵌套列表绑定的问题。qooxdoo:嵌套列表数据绑定

我有一个JSON数据存储它得到以下数据结构:

var data = [ 
     { 
      id: 1, 
      name: 'check all links if they work', 
      description: 'Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.', 
      tags: ['a', 'b', 'c'] 
     }, 
     { 
      id: 2, 
      name: 'check all titles', 
      description: 'Maecenas sed diam eget risus varius blandit sit amet non magna.', 
      tags: ['a', 'b', 'c'] 
     }, 
     { 
      id:3, 
      name: 'check layout in all browsers', 
      description: 'Maecenas sed diam eget risus varius blandit sit amet non magna.', 
      tags: ['a', 'b', 'c'] 
     }, 
     { 
      id:4, 
      name: 'validation if videos works fine', 
      description: 'Maecenas sed diam eget risus varius blandit sit amet non magna.', 
      tags: ['a', 'b', 'c'] 
     } 
     ]; 

我想这样做的:就是这个列表绑定到自定义列表项的UI列表并绑定嵌套的“标签”列表,一个属性到一个自定义的UI控件,显示一个标签列表。

controllerCase.setDelegate({ 
     configureItem : function(item) { 
     }, 
     createItem : function() { 
      return new my.custom.Item(); 
     }, 
     bindItem : function(controller, item, id) { 
      controller.bindProperty("", "model", null, item, id); 
      controller.bindProperty("name", "name", null, item, id); 
      controller.bindProperty("description", "description", null, item, id); 
     controller.bindProperty("tags", "tags", null, item, id); 
     }); 

我想将my.custom.Item的'tags'属性绑定到模型中的'tags'属性,但总是得到一个空数组。

+1

嗯,这很奇怪,因为bindProperty只复制引用,所以它不应该在乎它是否是一个数组。你是如何验证它是一个空阵列? 一定要使用数据数组提供的方法,不要信任控制台,因为它可能会显示一个空数组(使用.getItem(x)来检查)。 – 2011-05-31 06:30:26

+0

马丁,你绝对正确。我在控制台中看到[],但是当我尝试通过getItem(x)访问元素时,我看到它们。所以,我用getItem调用代替迭代,并且一切正常。谢谢。 – 2011-05-31 15:34:12

回答

0

正如Martin所建议的那样,应该使用数据数组类的方法。查看问题下的评论。