Mat*_*iva 8 javascript backbone.js
我有一个基本的主干模型,它的urlRoot属性已设置,服务器端的相应目标返回正确的JSON输出(JSON字符串和application/json标题).
我叫这样的抓取:
var athlete = new Athlete({ id: 1 });
athlete.fetch();
Run Code Online (Sandbox Code Playgroud)
在这一点上,如果我添加一个
console.log(athlete);
Run Code Online (Sandbox Code Playgroud)
我可以看到模型,并在firebug中检查它我可以打开属性对象并查看从服务器返回的所有值.
但如果我这样做:
console.log(athlete.get('name'));
Run Code Online (Sandbox Code Playgroud)
我得到undefined(名称出现在我上面提到的DOM检查中的属性下)
还做了一个:
console.log(athlete.attributes);
Run Code Online (Sandbox Code Playgroud)
返回一个对象,该对象只包含{id: 1}我在创建模型时传递的参数.
如果我像这样创建模型:
var athlete = new Athlete(<JSON string copypasted from the server response>);
Run Code Online (Sandbox Code Playgroud)
然后一切正常,该.get()方法返回我要求的任何内容,并athlete.attributes显示所有值.
我究竟做错了什么?
nik*_*shr 18
fetch是异步的,这意味着如果您console.log(athlete.get('name'))在获取后立即调用,则数据将不可用.
例如,在数据可用时使用事件通知
var athlete = new Athlete({id: 1});
athlete.on("change", function (model) {
console.log(model.get('name'));
});
athlete.fetch();
Run Code Online (Sandbox Code Playgroud)
或者为你的fetch添加一个回调
var athlete = new Athlete({ id: 1 });
athlete.fetch({
success: function (model) {
console.log(model.get('name'));
}
});
Run Code Online (Sandbox Code Playgroud)
或利用退回的承诺fetch:
athlete.fetch().then(function () {
console.log(athlete.get('name'));
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6000 次 |
| 最近记录: |