我有一个模型:如何在控制器中使用Ember模型属性?
export default DS.Model.extend({
name: DS.attr('string'),
things: DS.hasMany('match', {async: true, defaultValue: []})
});
我可以通过things
在模板迭代:
{{#each model.things as |thing|}}
<h3>thing.title</h3>
{{/each}}
但我不希望所有的事情。我只想展示其中的一些。我将显示的内容取决于控制器变量。所以我的想法是,我会在控制器中计算的属性,如下所示:
export default Ember.Controller.extend({
state: 0,
displayThings: function() {
var things = this.get('model').things;
var state = this.get('state');
// do stuff, filter in a way that isn't important
return things;
}.property('state')
});
忘记过滤现在,如果我试图通过这些displayThings
迭代如下:
{{#each displayThings as |thing|}}
<h3>thing.title</h3>
{{/each}}
没有显示在模板中。我可以用console.log
验证thing
是否在控制器属性中,并且某个对象正在发送到模板,但不是可以以某种方式迭代的对象。
我使用Ember 1.13。
难道你不想'this.get('model.things')'?顺便说一下,“东西”的默认值是不必要的。另外,要实现你的'displayThings'计算属性返回'things'。你不想让它返回一些过滤的'things'版本吗? –