はselect
テンプレートからレンダリングされ、呼び出されるまで DOM には存在しませんrenderGroups()
。
イベントはビューにバインドされていると思っていたので、選択が最初にDOMに存在しなくても必ずしも問題ではありませんか?
私は初めてなbackbone.js
ので、おそらくかなり明白です:
var DirectoryView = Backbone.View.extend({
el: $("table tbody"),
initialize: function(){
// Populate our collection
this.collection = new Directory(contacts);
// Get our unique groups
var groups = this.getGroups();
this.renderGroups(groups);
},
renderGroups: function(groups) {
var group = $("#groups");
var groupView = new GroupView({
model: {groups: groups}
})
group.append(groupView.render().el)
},
events : {
"change select" : "select"
},
select: function(e) {
console.log("hello")
},
getGroups: function() {
// Pluck all the group properties from our array of contacts and return the unique groups
return _.uniq(this.collection.pluck("group"), false, function(group){
return group.toLowerCase();
});
}
});
テンプレート:
<script id="group-option-tmpl" type="text/template">
<option value="all">All</option>
<% _.each(groups, function(group) { %>
<option value="<%= group %>"><%= group %></option>
<% }); %>
</script>
JSFiddle