每次获取都会进行主干调用

时间:2013-06-04 00:40:38

标签: javascript backbone.js

我已经设置了一个基本模态,我可以调用fetch(),模型将会更新。但是,我希望每次尝试访问属性时都会调用fetch()

所以我有类似的东西

get: function () {
    this.fetch()
    Backbone.Model.prototype.get.call(this, attr);
}

这显然不会起作用,因为this.fetch()是异步的。有没有办法等待获取,或以更好的方式实现这个概念

1 个答案:

答案 0 :(得分:1)

我不确定你是否应该覆盖get方法。您可能最好创建一个异步版本,并从中返回一个延迟对象。

Fetch是异步的,没有办法,所以你必须以异步方式执行此操作。

这样的事可能有用:

getAsync: function(attribute){
  var dfd = $.Deferred(), model = this;
  this.fetch().done(function(){
    dfd.resolve(model.get(attribute));
  });
  return dfd.promise();
}

然后你会像这样使用它:

model.getAsync(field).done(function(value){
  console.log(field + " was " + value)
});

(似乎在这里工作http://jsfiddle.net/FBp6h/