backbone.js のコレクションに問題があります。何か問題があります。これは私のモデルです
var Point = Backbone.Model.extend({
defaults: {
x: 0.0,
y: 0.0,
z: 0.0,
},
validate: function(attrs) {
if(!isNumber(attrs.x) || !isNumber(attrs.y) || !isNumber(attrs.z))
return "Discovered NaN point";
else return null;
},
});
私のコレクション:
var TrackCollection = Backbone.Collection.extend({
model: Point,
});
そしてビュー:
var TrackView = Backbone.View.extend({
initialize: function() {
_bind('all', this.render, this);
},
render: function() {
console.log(this.collection.models);
return this
},
});
私のホームビューでは、次のことを行います。
var c = new TrackCollection();
c.add({ x: 1, y: 1, z: 1});
c.add({ x: 1, y: 1, z: 1});
c.add({ x: 1, y: 1, z: 1});
var v = new TrackView({
collection: c,
});
v.render();
なぜ console.log(this.collection.models); render メソッドでは、空の配列が返されますか? 代わりに、console.log(this.collection); に変更すると、それは私のコレクションオブジェクトを返します..
編集ここでホームビュー
window.HomeView = Backbone.View.extend({
initialize: function() {
},
events: {
"click #makeIT": "makeIT",
},
render: function() {
$(this.el).html(this.template());
return this;
},
makeIT: function(e) {
var c = new TrackCollection();
c.add({ x: 1, y: 1, z: 1});
c.add({ x: 1, y: 1, z: 1});
c.add({ x: 1, y: 1, z: 1});
var v = new TrackView({
collection: c
});
v.render();
}
});
makeIT コンテンツをコピーして、モデルとコレクションがある同じファイルに配置すると、それ以外の場合は機能しません