私はbackbone.js初心者です。Railsアプリケーションにブックマークモデルがあります。テキストを入力して送信ボタンをクリックすると、新しいエントリを表示するためにページを更新する必要がないように、エントリを作成してビューに表示するテキスト フィールドを作成しようとしています。
次の Backbone.js コードを作成しました。
var BookmarksModel=Backbone.Model.extend({
urlRoot: "/bookmarks",
})
var enterBookmarkView = Backbone.View.extend({
el: $("#divForBookmarks"),
events: {
"click #submit" : "submitBookmark"
},
initialize: function(){
this.model.bind('change',this.render)
this.render();
},
render: function(){
alert("Render Called!");
var temp = _.template( $("#enterBookmark").html(), {} );
$(this.el).html(temp);
return this;
},
submitBookmark : function(){
var BM={
url: $("#bookmark").val(),
tag_list: $("#tags").val()
}
this.model.save(BM);
this.render();
}
});
var mymodel=new BookmarksModel();
var enter_bookmark_view = new enterBookmarkView({ model: mymodel });
ただし、これにより新しいエントリが作成されますが、すぐには表示されません。新しいエントリを表示するには、ページを更新する必要があります。モデルの変更イベントでレンダリング関数を呼び出しているので、これは機能するはずですよね? また、関数 submitBookmark でそれを呼び出したので、関数が呼び出されたときに少なくとも再レンダリングされますが、それも機能しません。また、これはビューを介してモデルに新しいエントリを作成する標準的な方法ですか?