ハンドルバーとバックボーンを組み合わせて使用しています。子ビューを保持する配列を持つ「コンテナ」ビューが1つあります。新しいビューを追加するたびに、クリックイベントがバインドされません。
私の投稿ビュー:
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はサーバー側でレンダリングされるため、ハンドルバーはありません)、すべてのイベントが正常に機能します。ページをリロードすると、投稿も好き/嫌いになります。
私は何が欠けていますか?