我正在使用把手和Backbone的組合。我有一個「容器」視圖,它有一個數組來保存子視圖。每當我添加一個新的視圖,點擊事件沒有被綁定。未添加到DOM中的新元素觸發的骨幹事件
我的文章查看:
Post.View = Backbone.View.extend({
CommentViews: {},
events: {
"click .likePost": "likePost",
"click .dislikePost": "dislikePost",
"click .addComment button": "addComment"
},
render: function() {
this.model.set("likeCount", this.model.get("likes").length);
this.model.set("dislikeCount", this.model.get("dislikes").length);
this.$('.like-count').html(this.model.get("likeCount") + " likes");
this.$('.dislike-count').html(this.model.get("dislikeCount") + " dislikes");
return this;
}, ...
中創建一個新的骨幹視圖,它附加到車把模板,並將其顯示在頁面上的「容器」查看我的回調代碼:
success: _.bind(function(data,status,xhr) {
$(this.el).find("#appendedInputButton").val('');
var newPost = new Post.Model(data);
var newPostView = new Post.View({model: newPost, el: "#wall-post-" + newPost.id});
var source = $("#post-template").html();
var template = Handlebars.compile(source);
var html = template(newPost.toJSON());
this.$('#posts').append(html);
newPostView.render();
this.PostViews[newPost.id] = newPostView;
}, this), ...
不知道發生了什麼,但是這種代碼最初是爲了設置頁面而運行的(因爲html是呈現在服務器端的,所以無法使用handlebars)並且所有事件都可以正常工作。如果我重新加載頁面,我也可以喜歡/不喜歡帖子。
我錯過了什麼?