无法在ArrayController上获取内容

时间:2014-02-06 10:25:31

标签: ember.js

这里可能发生了一些愚蠢的事情,但我不能做一些非常基本的事情。我有一个ArrayControllercontent属性中有四个数组项。以下是Ember Inspector的截图:

inspector

如果我键入$E.get('content'),其中$ E指向ArrayController对象,我希望得到对该数组的引用。相反,我得到“未定义”。如果我改为点击Inspector的UI来将$ E分配给ArrayController的内容属性,这可以正常工作。

非常奇怪,它在检查员以外造成我的问题,所以任何人们可以提供的帮助都将非常感激。


更新:

一些额外的背景......

我所指的ArrayController是以与普通方式稍微不同的方式实例化的。这种变化可能是问题的一部分,所以这里有详细信息:

我的模型定义如下:

App.Enum = DS.Model.extend(App.CouchDocPropsMixin,{
  data: DS.attr("EnumData"
      defaultValue: function() {
           var object = App.EnumData.create();
           var initialProp = Ember.Object.create({id:"value",name:"name"});
           object.pushObject(initialProp);
           return object;
      }
  }),
  desc: DS.attr("prose"),
  type: DS.attr("string")
});

对于proseEnumData,都需要构建一个序列化器/反序列化器。散文可以被忽略,因为它只不过是一个长字符串,我希望类型系统看起来略有不同。可能的冲突是EnumData及其使用方式。解串器正在做的是采用字典数据结构(ala,PHP关联数组串行化)并将其转换为更像Ember的扁平对象:

{foo: {bar:baz}}变为{id:foo, bar:baz})

App.EnumDataTransform = DS.Transform.extend({
    deserialize: function(serialized) {
        var enumData = App.EnumData.create();
        for (var property in serialized) {
            serialized[property].id = property;
            enumData.pushObject(serialized[property]);
        }
        return enumData;
    },  
    serialize: function(deserialized) {
        var response = {};
        if(deserialized.length) {
            deserialized.forEach(function(item) {
                var id = item.id;
                delete item.id;
                response[id] = item;
            });
        }
        return response;
    }
});

此上下文的最后一部分是EnumData对象定义,它现在是一个通用的ArrayController。我打算在某些时候为它添加一些计算属性,但是一旦我得到了基础工作:

App.EnumData = Ember.ArrayController.extend({
     // generic for now
});

无论如何,这是一个相当冗长的故事,讲述了示例中的ArrayController是如何产生的。

0 个答案:

没有答案