2015-04-23 68 views
0

在我们的应用程序中,我们正在将一个服务器端的对象数组传递给模型,并且数组中的每个元素都有一个键。例如...在一个烬模型中,如何引用动态对象键?

[ 
    {name: "dog", sound: "bark", food: "cats"}, 
    {name: "cat", sound: "meow", food: "mouse"} 
] 

在模型中,这被定义是这样的...

animals: hasMany(Animal, {key: 'name', embedded: true }) 

那么如果我们想对猫的数据,我们使用findBy功能来找到一个与名称=“猫”这样的...

var animalName = "cat"; 
model.get('animals').findBy('name', animalName); 

这工作得很好,有很多潜在类型的“动物”对象的,我们已经知道我们要寻找的。

不过我很好奇,因为其他原因,如果我们可以通过这个从服务器,它变得看起来像这样的客户端上的JSON对象中的地图......

animals : { "dog" : {sound: "bark", food: "cat"}, 
      "cat" : {sound: "meow", food: "mouse"} 
      } 

看来,为了做到这一点,在模型代码中,我们需要为每个潜在的动物类型定义一个“有”关系,这是动态的,我们不想在这里硬编码所有选项。有没有办法说动物有许多动物,但是有名字的地图,而不是数组?

+0

烬数据继承听起来像一个选项,看看这里:http://stackoverflow.com/questions/14582888/class-inheritance-in-ember-data-hasmany-associations – albertjan

回答

0

我从来没有想出如何与继承做到这一点我想要的方式,所以我最终定义一个动物作为基本属性......

animals: attr(), 

然后把我的对象在和访问数据与

animals.dog.sound 

var name = "dog"; 
animals[name].sound 

和工作的,虽然我们失去了一些好处Ø f模型继承系统。对于这个应用程序来说,继承并不重要。

相关问题