Я использую Backbone.js и пытаюсь заполнить мою модель, используя fetch(). Проблема, с которой я столкнулась, заключается в том, что возвращаемые данные не заполняют мою модель. Я нашел аналогичный вопрос here. Разница в том, что внутри моей функции успеха я не вижу никаких изменений данных и не запускаю событие «изменение».Backbone 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()' say внутри обратного вызова успеха? –
'company.get ('name')' похоже, возвращает имя! 'toJSON()' возвращает '[object Object]'. Это многообещающе! Все начатое в моем шаблоне подчеркивания у меня есть '<%= name =>' и '<% = адрес%>', которые были и остаются пустыми. Есть предположения? – laduke
Обычно вы вызываете функцию шаблона как 'html = template (this.model.toJSON())', как вы это делаете? –