3

我有很多选择框,每个选项框的类都是browse_select。我希望在这些选择框中的任何选项发生更改时触发render函数,但它不会触发此函数。Backbone.js更改事件未触发

$(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(); 
}); 
+6

查看事件的范围是视图本身,您的选择框是UserView的一部分吗? – chridam

+0

没有选择框是这个窗口的一部分,但没有UserView。真的,我不知道这个事件的基本信息范围本身。 – Mesuti

+1

This [answer](http://stackoverflow.com/a/8275139/122005)可能会有用。 – chridam

回答

0

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

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

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