Backbone.js更改事件而不是触发

时间:2013-12-16 13:34:13

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

我有很多选择框,每个框都有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();
});

1 个答案:

答案 0 :(得分:0)

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

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

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