javascript - 重置 Backbone 集合绑定(bind)功能

标签 javascript backbone.js

非常基本的问题,但我似乎无法弄清楚为什么我无法将方法绑定(bind)到集合上的重置事件。

HealthcheckList = Backbone.Collection.extend({

    model: Healthcheck,
    url: "/corsettiServices/rest/healthcheck/sort",

    initialize: function() {
        _.bindAll(this, "fetchSuccess", "addAll");
        console.log("Initializing view");
        this.on('reset', addAll);
        this.fetch({data: {type:'all'}, processData:true, success: this.fetchSuccess, reset: true});
    },

    addAll: function(m, options) {
        alert("adding");
    },

    fetchSuccess: function(m, response) {
        alert("success");
        console.log(m);
        m.each(function(h) {
            if (h.get("start")!=null) {
                $('#statusTable > tbody:last').append('<tr><td>' + h.get("start") + '</td><td>' + h.get("type") + '</td><td>' + h.get("status") + '</td></tr>');
            }
        })
    }
})

这会引发错误:Uncaught ReferenceError:addAll 未定义。删除与“重置”事件的绑定(bind)可以使数据获取和代码正常工作,但我想在每次重置集合时进行更多处理。关于如何在 Backbone Collection 中定义函数,我缺少什么?

最佳答案

this.on("reset", this.addAll);

您要小心范围。初始化函数将绑定(bind)到“this”,这将是在某个时刻实例化的新对象。但在初始化函数的范围内,addAll 是未定义的,因为您在“this”尚不存在的范围内编写此内容。最终 addAll 属性将绑定(bind)到“this”,但这里 addAll 是您传递给扩展的新对象的属性,它指向一个匿名函数。

关于javascript - 重置 Backbone 集合绑定(bind)功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21635603/

相关文章:

javascript - 交换 View 的模型?

javascript - backbone.js model.fetch 不向 php 发送任何数据

javascript - jQuery 中的递归 - 命理

javascript - 如何使搜索中的选项始终可见

javascript - 如何使用 jQuery 获取所有嵌套元素?

javascript - 如何从Facebook的喜欢按钮 Conceal 发送按钮但不 Conceal 添加评论并发送到Facebook框架

javascript - 将 Chrome 扩展程序转换为书签

.net - 自动化测试工具

javascript - Backbone 路由器参数不工作

javascript - 嵌套 Backbone 模型未获取数据