主干.js获取实际上没有设置属性
Backbone.js fetch not actually setting attributes
我有一个基本的骨干模型,设置了它的urlRoot
属性,服务器端的相应目标返回正确的JSON输出(JSON字符串和application/json
标头(。
我像这样调用获取:
var athlete = new Athlete({ id: 1 });
athlete.fetch();
此时,如果我添加一个
console.log(athlete);
我可以看到模型,并在Firebug中检查它,我可以打开属性对象并查看从服务器返回的所有值。
但是如果我这样做:
console.log(athlete.get('name'));
我得到undefined
(名称出现在我上面提到的 DOM 检查中的属性下(
还做一个:
console.log(athlete.attributes);
返回一个仅包含{id: 1}
的对象,这是我在创建模型时传递的参数。
如果我像这样创建模型:
var athlete = new Athlete(<JSON string copypasted from the server response>);
然后一切正常,.get()
方法返回我要求的任何内容,athlete.attributes
显示所有值。
我做错了什么?
fetch
是异步的,这意味着如果您在获取后立即调用console.log(athlete.get('name'))
,数据将不可用。
使用事件在数据可用时收到通知,例如
var athlete = new Athlete({id: 1});
athlete.on("change", function (model) {
console.log(model.get('name'));
});
athlete.fetch();
或在抓取中添加回传
var athlete = new Athlete({ id: 1 });
athlete.fetch({
success: function (model) {
console.log(model.get('name'));
}
});
或利用fetch
返回的承诺:
athlete.fetch().then(function () {
console.log(athlete.get('name'));
});
就像
在这个例子中使用事件时的快速评论一样。在我的情况下,它不适用于change
,因为此事件会在每次更改时触发。所以sync
诀窍。
var athlete = new Athlete({id: 1});
athlete.on("sync", function (model) {
console.log(model.get('name'));
});
athlete.fetch();
相关文章:
- Javascript使用变量设置属性
- 如何在自动完成时设置属性标题
- 未捕获的类型错误:无法设置属性'innerHTML'如果为null,则将脚本移动到正文不会;不起作用
- 未捕获的类型错误:无法设置属性'背景'的未定义
- 无法设置属性'innerHTML'在javascript中为null
- Haxe Javascript:在不使用Reflect的情况下按名称获取和设置属性
- Jquery为每个元素设置属性
- 从骨干集合筛选模型,然后为这些模型设置属性
- 我们可以设置属性'id'到不同的'按钮'通过使用javascript或jquery的循环
- 如何在javascript对象中设置属性的类型,就像mongoose模式设计一样
- emscripten+sdl=引发异常:TypeError:无法设置属性'widthNative'的未定
- 未捕获的类型错误:无法设置属性'onclick'为null.已尝试window.onload
- Backbone JS Promises在模型上设置属性之前解析
- Highcharts无法设置属性'的值;要点':对象为null或未定义
- 无法设置属性'round'的未定义
- 通过 Javascript 设置 C# 属性值
- 在 app.locals 上设置属性和调用 app.set() 有什么区别?
- 不引人注目地设置属性后函数失败
- j查询在设置属性后在后续单击时不读取数据属性
- IE错误:无法设置属性'的值;样式':对象为null或未定义