2013-03-26 66 views
1

所以我不知道什么是最好的方式做到这一点的,目前我有一个Ajax调用,看起来有些像这样传递到_this Ajax调用

var _this = this; 

     _.each(this.models, function (model) { 

      model.fetch({ 
       success: function(model, response) { 
        if (_.has(model.attributes, "settings")) {        
          _this.populateSettings(_this); 
         } 
        } 

在populateSettings方法,我需要一定的这个Backbone视图上的属性。我不确定如何获得这些属性,除了传入每个特定的属性,或传入对此骨干视图的引用以及在populateSettings中,使用该引用来填充视图。有一个更好的方法吗?谢谢。

回答

2

一种选择是在您的视图中监听model上的sync事件,以便每当model与来自服务器的数据成功同步时,您的视图可以运行populateSettings

这可能是这个样子:

model.on('sync', this.populateSettings, this) 

注意第三个参数,this。作为第三个参数传递this设置事件处理程序将运行的上下文。从Backbone.js文档:

要查看这在调用回调提供上下文值,通过可选的第三个参数:model.on('change', this.render, this)

如果您使用的事件侦听器,这样,你可以删除全部选项均为success:。而且您还可以找到changechange:[attribute]事件。