【发布时间】:2016-03-11 13:54:38
【问题描述】:
我遇到了一个奇怪的问题,即计算属性在其依赖属性更改时没有触发。
计算属性和动作
answers: computed('variant.questionAnswers.[]', function() {
return get(this, 'variant.questionAnswers').sortBy('position');
}),
...
actions: {
reorderItems(answerModels) {
answerModels.forEach(function(item, index) {
set(item, 'position', index + 1);
});
}
}
动作中的answerModels 是所有答案的数组,设置位置在该动作中正常工作。我可以在 ember 检查器中以及检查单个模型时看到位置发生变化。
但是,它不会更新视图顺序,因为 answers 计算属性不会被触发。
我尝试将依赖属性更改为 variant.questionAnswers、variant.questionAnswers.@each.position、variant.questionAnswers.[],但是当我更改操作中的位置时似乎没有任何反应。
我如何解决它是添加一个 timeHack 属性使其工作,但显然并不理想......
timeHack: null,
answers: computed('timeHack', 'variant.questionAnswers.[]', function() {
return get(this, 'variant.questionAnswers').sortBy('position');
}),
actions: {
reorderItems(answerModels) {
answerModels.forEach(function(item, index) {
set(item, 'position', index + 1);
});
set(this, 'timeHack', new Date());
}
}
关于如何让它发挥作用的任何想法?
【问题讨论】:
标签: javascript ember.js