0
我在backbone.js中的集合有問題,我做錯了什麼。 這是我的模型console.log上的集合模型爲空
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();
爲什麼控制檯.LOG(this.collection.mod ELS);在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內容並把它放在哪裏都是模型,並收集它的作品沒有別的
主視圖和模型,集合和視圖在2個不同的文件中,所以我試圖移動'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 =新的TrackView({collection:c, }); v.render();'在同一個文件中,它的工作原理。但是,如果我把它放入主視圖文件,它會停下來工作,並提醒我關於零對象而不是三個。 – originof
我不明白爲什麼它應該有差異,如果它在第二個文件或沒有,但只是爲了檢查我在我的本地機器上測試它,它仍然正常工作。你確定他們按正確的順序加載嗎?在創建阻止加載正確的新視圖之前,可能在第二個文件中存在其他一些錯誤。 – Jack