在获取Backbone模型或使用模型数据实例化后运行代码

时间:2014-09-13 02:49:59

标签: javascript backbone.js backbone-model

在初始化期间运行一些代码的简洁方法如果一个模型是用它的所有数据构造的,但是只有在获取之后运行该代码?我所拥有的最好的是以下内容,但我希望有一种更简化的方法:

if (this.hasData()) {
    this.setupListeners();
} else {
    this.fetch().done(this.setupListeners);
}

或者可能是以下内容,尽管在阅读时意图不是很明显:

var whenLoaded = (this.hasData()) ? $.Deferred().resolve() : this.fetch();
whenLoaded.done(this.setupListeners);

Backstory:模型对自身进行一些listenTo调用,以便在发生某些更改时自行保存。但是如果模型需要获取,则在获取完成之前不应该进行listenTo(),否则一旦获取数据,后续集将触发更改事件,从而不必要地保存到服务器。

有更清洁的方法吗?或者这可能是最好的,我很挑剔。谢谢你的想法。

0 个答案:

没有答案