这是我的 Backbone 模型构造器
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"}
我已经把这个模型附加到一个 View 上了
define(['models/instance.js'], function(Model){
View = Backbone.View.extend({
initialize: function() {
this.model = new Model({
id:1
});
});
return new View();
});
正在调用 URL,其内容如上,我可以在 firebug 中看到,但“名称”未设置。 我知道我可以提供一个解析函数,当我使用 sequelize-restful-extended 时我可能需要这样做,但我首先希望 backbone 从固定文件读取和设置。 doco 足够直接,我所拥有的应该可以工作,所以我在做其他不好的事情吗?
最佳答案
您在 model.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,并在您的浏览器在单独的“线程”(对于所有意图和目的)。
关于javascript - Backbone 模型。获取不设置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32424495/