Backbone アプリで、ビューの 1 つが期待どおりにレンダリングされません。
ユーザーがルート「test/addtests」をたどると、以下に示す関数が呼び出されます
addtests: function () {
this.testView = new TestView();
},
ビューは、以下に示す初期化関数を使用して自動的にレンダリングする必要があります
window.TestView = Backbone.View.extend({
template: _.template($('#test').html()),
initialize: function () {
tests.bind("reset", this.render, this);
},
render: function (eventName) {
alert('asdf');
$(this.el).html(this.template());
_.each(tests.models, function (test) {
this.renderSelectBox(test);
}, this);
return this;
},
renderSelectBox: function (test) {
var optionView = new TFS.FormOptionView({
model: test
});
$(this.el).append(optionView.render().el);
},
events:{
"click button": "addTest"
},
...ect
});
ただし、何も起こらず、最後のページのコンテンツが表示されるだけです。render 関数で設定したアラートも発生しません。ただし、奇妙なことに、更新をクリックすると、アラートが発生します:S.
ルートは正しく設定されており、「addtests」関数を正しく指していますが、期待どおりにビューを初期化していないようです。
また、私が混乱している 2 番目のことは、完全なコレクションがある場合、get メソッドを使用して単一のモデルを引き出すことができないことです。例えば
players // a full collection
var test = players.get(1);
console.log(test.get('id')); //undefined
:S