我正在使用车把和 Backbone 的组合。我有一个“容器”视图,它有一个数组来保存子视图。每当我添加新视图时,都不会绑定单击事件。
我的帖子视图:
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 是在服务器端呈现的,所以没有把手)并且所有事件都可以正常工作。如果我重新加载页面,我也可以喜欢/不喜欢帖子。
我错过了什么?