我正在使用Backbone.js並試圖使用fetch()來填充我的模型。我遇到的問題是返回的數據沒有填充我的模型。我發現了一個類似的問題here。不同之處在於,在我的成功函數中,我沒有看到任何數據變化,也沒有發生「更改」事件。骨幹js不使用fetch填充數據模型()
的代碼:
模型
window.Company = Backbone.Model.extend({
urlRoot: "/api/company",
defaults:{
"id":null,
"name":"",
"address":"",
"city":"",
"state":"",
"phone":""
},
events: {
'change': 'doChange'
},
doChange: function(event) {
alert('company changed');
}
})
路由器
var AppRouter = Backbone.Router.extend({
routes:{
"":"home",
"company/:id":"companyDetails"
},
initialize:function() {
var user = new User();
this.headerView = new HeaderView({
model: user
});
$('.header').html(this.headerView.el);
console.log("router initialized.");
},
companyDetails: function (id) {
var company = new Company({
id: id
});
company.fetch({
success: function(){
console.log('company.id is ' + company.id);
console.log('company.name is ' + company.name);
console.log('company.address is ' + company.address);
$("#content").html(new CompanyView({
model: company
}).el);
}
});
}
});
JSON
{"address":"555 Main St","name":"Confused Technologies","id":"8dc206cc-1524-4623-a6cd-97c185a76392","state":"CO","city":"Denver","zip":"80206","phone":"5551212"}
名稱和地址始終未定義。我必須俯視一些簡單的事情?
編輯
包括錯誤地離開了模型傳遞到模板中的視圖。
查看
window.CompanyView = Backbone.View.extend({
initialize:function() {
this.render();
console.log('CompanyView initialized');
},
render:function (eventName) {
$(this.el).html(this.template());
return this;
}
})
在成功回調中,'company.get('name')'或'company.toJSON()'說什麼? – 2013-03-21 01:42:33
'company.get('name')'似乎返回名稱! 'toJSON()'返回'[object Object]'。這是有希望的!開始所有這一切都是在我的下劃線模板中,我有'<%= name =>'和'<%= address%>',它們仍然是空的。有什麼想法嗎? – laduke 2013-03-21 02:50:44
您通常將模板函數調用爲'html = template(this.model.toJSON())',那麼您怎麼做? – 2013-03-21 03:32:06