1

所以我不确定最好的方法是什么,目前我有一个看起来像这样的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 中使用该引用来填充视图。有一个更好的方法吗?谢谢。

4

1 回答 1

2

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

这可能看起来像这样:

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

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

要在调用回调时为此提供上下文值,请传递可选的第三个参数:model.on('change', this.render, this)

如果您使用这样的事件侦听器,则可以success:完全删除该选项。您可能还会发现changeorchange:[attribute]事件也很有用。

于 2013-03-26T04:01:29.597 回答