2013-07-03 106 views
1

在我的應用程序中,有一個事件模型的屬性可能會更改,也可能不會更改。我的控制器中也有一個計算屬性,它依賴於我的模型屬性和我的應用程序中的另一個變量(不屬於模型)。EmberJS - 將相同的值分配給相關屬性時更新計算屬性

即使當偶數觸發,其他應用程序變量的變化,從而影響到控制器的計算性能,我想這些變化對事件觸發反映模型的屬性不會改變。

我注意到,餘燼不會「更新」的屬性,如果相同的值分配給它,我似乎無法找到一種方法來強制更新。

現在我有一個奶酪修復,其中如果模型的屬性不會改變,我將值改爲別的東西,然後重置它回到它是爲了觸發控制器的計算性能。這不是非常有效或乾淨。有另一種方法來處理這個問題嗎?

編輯: 要顯示簡要我剛纔怎麼回事...

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

可以顯示代碼,什麼你在做什麼? – intuitivepixel

回答

2

您可以使用特殊的@each property來觀察數組中的更改。以下更改意味着將在model.model_prop或「App.otherStuff。@ each」更改時更新。

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', '[email protected]') 
} 

Full working example JSBin

+0

因此,沒有辦法觀察不在Ember應用程序內的變量嗎? –

+1

我認爲這是事實。 Ember在內部處理觀察/數據綁定細節,因此它只能用於燼變量。 – CraigTeegarden