【问题标题】:Backbone.js change event not firingBackbone.js 更改事件未触发
【发布时间】: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 可能有用。
  • 你能添加你的模板代码吗?

标签: javascript jquery backbone.js javascript-framework backbone-views


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2011-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多