第二次获取触发器

时间:2014-03-20 11:24:00

标签: backbone.js backbone-events

实际开始的问题是,在fetch被压缩之前加载模板。所以我不得不添加

 $.when(this.model.fetch()).done(function () {
            that.$el.html(that.template({
                model: that.model.toJSON()
            }));
           that.fjskdflsfk();
           that.sdjfksfj();
        });

内部渲染功能。

现在我必须在某些情况下从另一个URL获取数据(在初始化之后,所以第一次加载就好了)

 this.model.fetch({
        url: getUrl() + changeableUrl,
        success: function () {
            console.log("success");
            that.render();
        },
        error: function (model, response) {
            showMessage("error", response.responseText);
        }
    });

成功trigers渲染,以及渲染中的初始提取trigers,在这种情况下是不需要的。 也许有人有解决方案?

1 个答案:

答案 0 :(得分:0)

您不应该从视图的'渲染'中调用model.fetch。相反,让您的视图听取模型的sync事件并通过渲染做出反应。

// in view:

initialize: function() {
    this.listenTo(this.model, 'sync', this.render);
}

如果这是调用视图render的唯一触发器,则在模型有数据之前不会调用它,并且您不会获得额外的fetch调用,因为您可以删除$.when来自视图render的{​​1}}内容。