使用backbone.js我試圖從我的服務器獲取模型,並基於該模型呈現下劃線模板。我首先嚐試使用以下渲染函數而不使用api調用的結果:myModel.fetch()完成時渲染主幹模板?
render: function(options) {
this.ticketId = options.ticketId;
var that = this;
var ticketModel = new TicketModel({'id': that.ticketId});
$.when(ticketModel.fetch()).done(function(){
console.log(ticketModel); // this outputs the correct model
});
var template = _.template($('#tab-content-template').html(), {ticketId: that.ticketId});
this.$el.html(template);
},
這很好用。所以,我嘗試使用API調用的結果來呈現模板:
render: function(options) {
this.ticketId = options.ticketId;
var that = this;
var ticketModel = new TicketModel({'id': this.ticketId});
$.when(ticketModel.fetch()).done(function(){
console.log(ticketModel);
console.log($('#tab-content-template').html());
var template = _.template($('#tab-content-template').html(), {ticketId: that.ticketId});
this.$el.html(template);
});
},
但不幸的是,這將導致一個錯誤,說
Uncaugt TypeError: Cannot read property 'html' of undefined.
奇怪的是,它輸出HTML控制檯正確地從console.log($('#tab-content-template').html());
產生。我得到的錯誤是this.$el.html(template);
這條線怎麼可能是它首先能夠得到html(),然後它說它找不到屬性html?我完全卡在這裏..:S
歡迎所有提示!
從這裏學到了一些新東西沒有意識到fetch返回$。推遲對象,歡呼聲 – Quince