2016-11-20 55 views
0

问题是我无法正确显示我对一个花费属性所做的更改。EmberJs - 计算属性和模板

这里的行动:

toggle_favorites: function() { 
     var favorite = this.get('some_service').get("favorites"); 
     this.set("favorite", favorite); 
     if (favorite.length > 0) { 
     this.set("hasFavorites", true); 
     } 
    // show some feedback, irrelevant 
    }, 

后,我只是显示一切以列表

{{#each favorite}} ... 

的问题是,如果我不断添加的东西到列表中,这些变化不会体现在hbs文件中。

我试图使用计算属性如下

favs: Ember.computed("hasFavorites", "some_service.favorites", "favorite.length", function() { 
     return this.get("favorite"); 
    }).property('@favorite.length'), 

并显示,但没有成功。 如果我添加一些东西到列表中,然后触发我的动作,它会成功,但是每个连续添加都不会显示。

我正在使用Ember 2.6。

+0

也许你可以提供一个不工作的'烬,twiddle'? – Lux

回答

0

我有一些奇怪的修复

我使用

this.set("favorite", null); 
    this.set("favorite", favorite); 

favs: Ember.computed("favorite.[]", function() { 
    return this.get("favorite"); 
    }), 

设置喜欢的属性为空,似乎做的伎俩,虽然我不能把我的头包在里面。

0

@Rentonie,使用favorite.length[email protected] 尝试

favs: Ember.computed("favorite.length", function() { 
    return this.get("favorite"); 
}), 

favs: Ember.computed("[email protected]", function() { 
    return this.get("favorite"); 
}),