【发布时间】:2017-08-14 22:32:38
【问题描述】:
我遇到了 Ember 的问题,当我更改对象的属性(在本例中为过滤英雄)然后将计算属性设置为更新版本时,我的模板不会更新。如何在调用操作时强制模板随着对象的更改而更新?
在我的模板中,我有:
{{#each filteredHeroes as |hero index|}}
{{hero._data.AttacksPerSecond}}
{{/each}}
在我的控制器中,我有一个动作:
calculateStats() {
var heroes = this.get("filteredHeroes");
var valueOfAttackSpeedPerCP = 5.5;
var valueOfPowerPerCP = 6;
var attackSpeed = this.get('cpAttackSpeed') * valueOfAttackSpeedPerCP;
var power = this.get('cpPower') * valueOfPowerPerCP;
for (var i = 0; i < heroes.length; i++) {
//Set Attacks per second for the specific hero
heroes[i]._data.AttacksPerSecond = (1 / (heroes[i]._data.attributesByLevel[14]['BaseAttackTime'] / ((heroes[i]._data.attributesByLevel[14]['AttackSpeedRating'] + attackSpeed) / 100)));
}
this.set('filteredHeroes', heroes);
}
感谢您的帮助!
【问题讨论】:
-
使用
Ember.set(heroes[i],'_data.AttacksPerSecond', value)只有这样更改才会反映在模板中。你甚至可以试试 notifyPropertyChange emberjs.com/api/classes/… -
@kumkanillam 太棒了!那行得通,谢谢!如果您将其作为答案发布,我可以接受,否则我将发布一个并使用更新的代码接受它
标签: javascript ember.js ember-cli