1

我已经设置了一个基本模式,我可以在其中调用fetch()并且模型将更新。但是,fetch()每次您尝试访问属性时,我都希望被调用。

所以我有这样的东西

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

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

4

1 回答 1

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/

于 2013-06-04T00:59:06.457 回答