在我们的应用程序中,当前我们将一组对象从服务器端传递到模型中,并且数组中的每个元素都有一个键。例如......
[
{name: "dog", sound: "bark", food: "cats"},
{name: "cat", sound: "meow", food: "mouse"}
]
在模型中,这被定义为......
animals: hasMany(Animal, {key: 'name', embedded: true })
然后,如果我们想要cat的数据,我们使用findBy功能找到名称=“cat”的那个,就像这样......
var animalName = "cat";
model.get('animals').findBy('name', animalName);
这很有效,有许多潜在类型的“动物”物品,我们已经知道我们在寻找什么。
但是我很好奇其他原因,如果我们可以从服务器传递这个作为Map,这将成为客户端上看起来像这样的JSON对象......
animals : { "dog" : {sound: "bark", food: "cat"},
"cat" : {sound: "meow", food: "mouse"}
}
为了做到这一点,似乎在模型代码中我们需要为每个潜在的动物类型定义一个“有一个”关系,这是动态的,我们不想在这里硬编码所有选项。有没有办法说动物有很多动物,但是在地图上有名字,而不仅仅是一个数组?
答案 0 :(得分:0)
我从未想过如何以我想要的方式继承这一点,所以我最终将动物定义为基本属性......
animals: attr(),
然后将我的对象放入其中并使用
访问数据animals.dog.sound
或
var name = "dog";
animals[name].sound
并且这有效,尽管我们失去了模型继承系统的一些好处。对于这个应用程序,继承并不重要。