0
我正在與backbone.js玩弄,並陷入僵局。這裏是我的代碼:隱藏Backbone.js模型
window.Car = Backbone.Model.extend();
window.CarCollection = Backbone.Collection.extend({
model: Car,
url:"../api/car/",
});
window.CarListView = Backbone.View.extend({
tagName:'ul',
initialize: function() {
this.model.on("reset", this.render);
},
render: function (eventName) {
console.log(this.model); //is an object
console.log(this.model.models); //is an empty array
return this;
},
});
// Router
var AppRouter = Backbone.Router.extend({
routes:{
"":"list",
"cars/:id":"carDetails"
},
list:function() {
this.carList = new CarCollection();
this.carListView = new CarListView({model:this.carList});
this.carList.fetch();
$('#sidebar').html(this.carListView.render().el);
},
});
$(function() {
app = new AppRouter();
Backbone.history.start();
});
我沒有足夠的信譽發表圖片,所以這裏是從Chrome開發人員工具控制檯的文本版本:
V r {length: 0, models: Array[0], _byId: Object, _events: Object, constructor: function…}
> _byId: Object
> _events: Object
> length: 4
> models: Array[4]
> __proto__: s
我的問題是,我試圖訪問似乎「隱藏」在空白背後的非空模型屬性。如何訪問長度爲4的模型屬性?
感謝,有兩件事:1:該代碼導致'未捕獲的ReferenceError:carListView未定義'。 2:我認爲綁定'重置'事件會導致渲染函數在數據被提取後被調用? –
1.哎呀,你是對的 - 看看編輯。您需要將視圖別名爲變量,因爲'this'引用在回調中不起作用。 2.'reset'監聽器應該可以工作,但是在你調用'.fetch()'之後,你首先明確地調用'carListView.render()'。 – nrabinowitz