这是我的骨干模型构造函数
define([], function(){
return Backbone.Model.extend({
urlRoot:'/dummy-api/Instances',
defaults:{
name:null,
read:false,
write:false
},
initialize: function () {
this.fetch();
console.log("after init "+this.get("id")+" name="+this.get("name"));
}
})
});
和/ dummy-api / Instances / 1已经放了这个
{"id":1,"name":"bangladesh"}
我已将此模型附加到具有此
的视图中define(['models/instance.js'], function(Model){
View = Backbone.View.extend({
initialize: function() {
this.model = new Model({
id:1
});
});
return new View();
});
网址被调用,它的内容如上所述,我可以在firebug中看到,但“名称”没有设置。 我知道我可以提供一个解析函数,因为我正在使用sequelize-restful-extended,我可能需要这样做,但我首先想要从一个固定文件读取和设置主干。 doco足够直接,我应该工作,所以我做了别的坏事吗?
答案 0 :(得分:2)
您在model.fetch完成之前记录了这些值。
设置回调而不是在fetch成功完成后记录值,它应该按预期工作。
define([], function(){
return Backbone.Model.extend({
urlRoot:'/dummy-api/Instances',
defaults:{
name:null,
read:false,
write:false
},
initialize: function () {
this.fetch({
success: function() {
console.log("after init "+this.get("id")+" name="+this.get("name"));
}.bind(this)
});
}
})
});
这是必要的,因为this.fetch()
异步执行XMLHttpRequest,并继续执行下一行代码,而浏览器在单独的"线程中执行该请求。 (出于所有意图和目的)。