我结合我的骨干机型这样的变化情况。
this.model.on( "change", this.render, this );
有时候,我想获取最新版本的车型的,强行渲染视图。 所以我这样做
this.model.fetch();
不幸的是model.fetch()只有当新的数据是从什么是之前存储在模型不同触发change事件。
我怎么能总是引发this.render回调获取完成时,无论触发更改事件或不?
在此先感谢您的帮助
我结合我的骨干机型这样的变化情况。
this.model.on( "change", this.render, this );
有时候,我想获取最新版本的车型的,强行渲染视图。 所以我这样做
this.model.fetch();
不幸的是model.fetch()只有当新的数据是从什么是之前存储在模型不同触发change事件。
我怎么能总是引发this.render回调获取完成时,无论触发更改事件或不?
在此先感谢您的帮助
您可以使用$.ajax
成功回调,但你也可以只是听为骨干sync
和error
的模型事件。 sync
成功调用服务器后火灾, error
失败的呼叫服务器后大火。
this.model.on('sync', this.render, this);
this.model.on('error', this.handleError, this);
该fetch
方法可任选地接受具有成功和错误回调; 最简单的办法就是把你浏览的render
在成功回调。 你也很可能使用返回jqXHR承诺,但如果有过了AJAX是(每jQuery的)成功,但模型初始化失败的情况下,即使用可能有问题。
我不知道什么是你的代码结构,但是如果你只是抓取您的视图中你的模型,你可以使用这样的事情
var that = this;
this.model.fetch().done(function () {
that.render();
});
否则,如果你正在撷取你的视野之外你的模型,你可以通过你的承诺,你的看法,使类似的东西
var promise = model.fetch();
// other code here
var view = new View({
model: model,
promise: promise
});
和您的视图中,例如在初始化
View = Backbone.View.extend({
initialize: function(){
this.options.promise.done(function () {
// your code here
});
}
});
这个怎么样的解决方案:
// emit fetch:error, fetch:success, fetch:complete, and fetch:start events
fetch: function(options) {
var _this = this;
options = options || {};
var error = options.error;
var success = options.success;
var complete = options.complete;
options.error = function(xhr, textStatus, errorThrown) {
_this.trigger('fetch:error');
if (error) error(xhr, textStatus, errorThrown);
};
options.success = function(resp) {
_this.trigger('fetch:success');
if (success) success.call(options.context, resp);
};
options.complete = function() {
_this.trigger('fetch:complete');
if (complete) complete();
};
_this.trigger('fetch:start');
return Backbone.Model.prototype.fetch.call(this, options);
}
链接要点https://gist.github.com/fedyk/23761ce1236c5673fb84