没有setter的计算Ember属性不会更新

时间:2014-02-25 12:38:46

标签: ember.js

当我有一个设置自己的计算属性然后更改依赖项时,为什么属性没有重新加载?

数据属性函数只调用一次,但为什么在设置过滤器后没有更新?

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"

演示:http://emberjs.jsbin.com/korecamu/1/edit

0 个答案:

没有答案