当我有一个设置自己的计算属性然后更改依赖项时,为什么属性没有重新加载?
数据属性函数只调用一次,但为什么在设置过滤器后没有更新?
var fetch = function(filter) {
return new Em.RSVP.Promise(function(resolve) {
resolve(filter ? "OK" : "NOT OK");
});
};
MyType = Em.Object.extend({
filter: null,
data: function() {
console.log("refresh data");
var self = this;
fetch(self.get('filter')).then(function(data) {
self.set('data', data);
});
return null;
}.property('filter')
});
console.log("start");
var x = MyType.create();
console.log(x.get('data'));
Em.run.later(function() {
console.log(x.get('data'));
}, 0);
Em.run.later(function() {
x.set('filter', true);
}, 50);
Em.run.later(function() {
console.log(x.get('data'));
}, 100);
产生的输出:
"start"
"refresh data"
null
"NOT OK"
"NOT OK"
但预期的产出:
"start"
"refresh data"
null
"NOT OK"
"OK"