我已经设置了一个基本模式,我可以在其中调用fetch()
并且模型将更新。但是,fetch()
每次您尝试访问属性时,我都希望被调用。
所以我有这样的东西
get: function () {
this.fetch()
Backbone.Model.prototype.get.call(this, attr);
}
这显然不起作用,因为 this.fetch() 是异步的。有没有办法等待获取,或者以更好的方式实现这个概念
我已经设置了一个基本模式,我可以在其中调用fetch()
并且模型将更新。但是,fetch()
每次您尝试访问属性时,我都希望被调用。
所以我有这样的东西
get: function () {
this.fetch()
Backbone.Model.prototype.get.call(this, attr);
}
这显然不起作用,因为 this.fetch() 是异步的。有没有办法等待获取,或者以更好的方式实现这个概念
我不确定您是否应该覆盖 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/)