我使用Ember和Ember Data练习,但是我使用Ember Models时只能处理简单的1-M关系。这是jsbin:http://jsbin.com/nikenu/4/edit?html,js,output
谁能告诉我蜡笔在哪里?
我看到2个模型已加载但是盒子没有通过定义的关系加载蜡笔,同样,蜡笔也在检测它们的盒子。
答案 0 :(得分:0)
模型中的关系属性不应该是ID - 它们应该引用其他模型。因此,请改为定义您的模型:
App.Box = DS.Model.extend({
owner: DS.attr('string'),
crayons: DS.hasMany('crayon') // <----
});
App.Crayon = DS.Model.extend({
color: DS.attr('string'),
box: DS.belongsTo('box', {async: true}) // <----
});
然后在您的模板中,您尝试引用model.crayonIds
,但请记住您已经在循环中,因此您应该使用item.crayons
。像这样:
<ul>
{{#each item in model}}
<li>#{{item.id}} | {{item.owner}}</li>
{{log item.crayons.length}}
<h5>Crayons</h5>
<ul>
{{#each record in item.crayons}} <!-- change is here -->
<li>#{{record.id}} | {{record.color}}</li>
{{/each}}
</ul>
{{/each}}
</ul>