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