在我的ember应用程序中,有一个模型的属性可能会或可能不会更改的事件。我的控制器中还有一个计算属性,它依赖于我的模型的属性和我的应用程序中的另一个变量(不属于模型)。
即使偶数触发时模型的属性没有改变,另一个应用程序变量也会改变,这会影响控制器的计算属性,我希望这些更改能够反映在事件触发上。
我注意到如果为它分配了相同的值,ember就不会'更新'属性,而且我似乎无法找到强制更新的方法。
现在我有一个奶酪修复,如果模型的属性没有改变,我将值更改为其他东西,然后将其重置回原来的状态以触发控制器的计算属性。这不是非常有效或干净。还有另一种方法可以解决这个问题吗?
编辑: 简要说明我发生了什么...
session.other_application_var = [1, 2];
App.MyModel = Ember.Object.extend({
model_prop: 1
});
//an instance of MyModel is assigned to the index route's model
App.IndexController = Ember.ObjectController.extend({
comp_prop: function(){
var sum = this.get('model.model_prop');
session.other_application_var.forEach(function(num){
sum += num;
});
return sum;
}.property('model.model_prop)
});
所以基本上,如果我更改session.other_application_var,比如添加另一个元素,我希望comp_prop更新。
答案 0 :(得分:2)
您可以使用特殊@each
property来观察数组中的更改。以下更改表示comp_prop
或“App.otherStuff。@ each”更改时model.model_prop
将更新。
App = Ember.Application.create({
otherStuff: [2,3,4]
});
App.IndexController = Ember.ObjectController.extend({
comp_prop: function(){
var sum = this.get('model.model_prop');
var otherStuff = App.get('otherStuff');
otherStuff.forEach(function(num){
sum += num;
});
return sum;
}.property('model.model_prop', 'App.otherStuff.@each')
}