[英]EmberJS Observer Not Firing
我有一個需要更改其任何值時執行給定操作的組件,但是我創建的觀察器不會觸發:
export default Ember.Component.extend({
taxes: null,
NOAYears: 2,
NOAValues: Ember.computed("NOAYears", function() {
var NOAs = [],
lastYear = new Date().getFullYear() - 1;
for (var year = 0; year < this.get("NOAYears"); year++) {
NOAs.push({year: lastYear - year, value: 0});
}
return NOAs;
}),
NOAYearsChanged: function() {
// does not fire when any of the values change
}.observes("NOAValues.@each.value")
});
在組件模板中,我通過{{#each}}
迭代器進行綁定:
{{#each NOAValues as |year|}}
<label for="{{year.year}}-value">{{year.year}}</label>
{{input min="0" step="any" value=year.value required=true placeholder="Yearly Income"}}
{{/each}}
當NOAValues
任何value
屬性發生更改時,如何使觀察者觸發?
此問題已被驗證為由遺留代碼引起的錯誤,該錯誤會將任何以大寫字母開頭的屬性名稱(即PascalCase)解釋為全局或類名稱引用,從而使該屬性不可觀察。
來源: https : //github.com/emberjs/ember.js/issues/10414
似乎將在某些即將發布的版本中進行修復。
為了觀察屬性的變化,您需要為給定的屬性使用一個setter。 我認為您引入了擴展Ember.Object的NOA模型就足夠了。 例如:
// file app/model/noa.js
export default Ember.Object.extend({
year: undefined,
value: undefined
});
然后替換為:
for (var year = 0; year < this.get("NOAYears"); year++) {
NOAs.push({year: lastYear - year, value: 0});
}
同
for (var year = 0; year < this.get("NOAYears"); year++) {
NOAs.push(app.model.noa.create({year: lastYear - year, value: 0}));
}
您應該看到一些屬性更改。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.