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

Этот [ответ] (http://stackoverflow.com/a/8275139/122005) может быть полезен. – chridam

ответ

0

Двойная проверка, что поля выбора находятся в #myUserTemp.

Также вы можете поместить логику user.fetch вне этого представления. Со своей стороны обратного вызова я не уверен, что прослушиватели событий могут быть правильно настроены из-за вашего потока.

Я бы предположил, что вы вызываете выборку извне представления, а затем, когда выборка успешно инициирует новый UserView и передает коллекцию. Это также позволяет стандартным образом установить _.template() в качестве свойства представления.

Смежные вопросы