Backbone.js 更改事件未触发

Posted

技术标签:

【中文标题】Backbone.js 更改事件未触发【英文标题】:Backbone.js change event not firing 【发布时间】:2014-01-03 22:08:18 【问题描述】:

我有很多选择框,每个框都有browse_select 的类。每当这些选择框中的任何选项发生更改但它没有触发此功能时,我都想触发 render 功能。

$(function()
    var Users = Backbone.Collection.extend(
        url: "/app/phpscripts/services/browse_users/?"
    );

    var UserView = Backbone.View.extend(
        el: '.list_ctn ul',
        tagName: 'li',

        events: 
            "change .browse_select" : "render"
        ,

        render: function()
            console.log("render");
            var users = new Users();
            var that = this;
            users.fetch(
                success: function()
                    var template = _.template($('#myUserTemp').html(),users: users.models);
                    that.$el.html(template);
                
            );
        
    );

    var userView = new UserView();
    userView.render();
);

【问题讨论】:

视图事件的范围是视图本身,您的选择框是 UserView 的一部分吗? 此窗口中没有选择框,但 UserView 中没有。真的,我不知道视野事件本身的基本信息。 这个answer 可能有用。 你能添加你的模板代码吗? 【参考方案1】:

仔细检查选择框是否在 #myUserTemp 中。

此外,您可能希望将 user.fetch 逻辑放在该视图之外。由于它是回调的一部分,我不确定是否可以根据您的流程正确设置事件侦听器。

我建议您从视图外部调用 fetch,然后在 fetch 成功时启动一个新的 UserView 并传递集合。这允许您以标准方式将 _.template() 设置为视图属性。

【讨论】:

以上是关于Backbone.js 更改事件未触发的主要内容,如果未能解决你的问题,请参考以下文章

在 Backbone.js 中使用后退按钮后多次触发事件

Backbone.js - 导航时出现 404 jQuery 错误

输入未触发更改事件

角度 2(更改)事件未触发

有没有办法监控对象的变化?

选择的插件更改事件未触发