Backbone.js属性/抓取似乎很有趣
Backbone.js attribute / fetching seems to work funny
因此,我有以下代码可以访问我的rest api:
Employees.Employee = Backbone.Model.extend({
urlRoot: 'api/employee'
})
var daryl = new Employees.Employee({id:17})
daryl.fetch()
console.log(daryl.attributes)
现在,当我console.log属性时,daryl对象大致设置如下:
daryl = {
attributes:
[0]: {
id: 17,
first: 'Daryl',
last: 'xxxx',
email: 'xxx'
},
id: 17,
watchers...
protos...
}
因此,尝试daryl.get("first")会导致未定义。其他所有内容都存储在数组中索引为0的对象中。为什么会这样?我是这里的一个新手,但这绝对不是大多数教程显示主干是如何工作的。
所以,如果我做daryl.get("第一个"),我会得到未定义。daryl.get('id')工作如预期。daryl.get("0")实际上返回了实际模型的一个普通的旧javascript对象,即我可能期望的骨干模型实际是什么。为什么?
您的服务器在响应中似乎返回了一个数组,因此调用model.get('0')
会返回您真正想要的属性。您需要修改服务器的响应以仅返回对象(而不是数组中的对象),或者需要向模型添加parse
方法以返回响应数组中的第一个项。
不确定这是否是问题所在(但在调用fetch后执行console.log
是有问题的),但重要的是要记住daryl.fetch()
是异步发生的。
也就是说,你应该试试:
daryl.fetch().done(function(){
console.log(daryl.attributes);
model.get("first");
});
或
daryl.fetch({success : function(model){
console.log(model);
model.get("first");
}});
这确保了AJAX请求在尝试对模型执行操作之前已经完成,这可能是get
返回undefined
的原因。
相关文章:
- 尝试使用Node.js动态路由从IMDB中抓取电影内容.但是在我的output.json文件中没有定义
- 如何抓取本地保存的 html 的“隐藏”JS
- Backbone.js属性/抓取似乎很有趣
- 如何使用JS抓取页面以获取内部链接?它也必须递归地完成
- 如何使用node.js抓取包含动态内容的页面
- Python3网络抓取问题(关于JS)
- Beautifulsoup抓取数据,其中有js文本在中间
- AJAX/JS:抓取多个输入字段而不刷新或点击按钮,php会回显该值
- JS/Ajax:抓取输入字段值,无需刷新或点击按钮
- 节点中的空对象 X 射线抓取器.js不工作
- JS滑块网站 - 谷歌抓取
- 如何使用PhantomJS和node.js进行抓取
- 节点.JS - 如何限制多承诺的请求以防止溢出(Web 抓取)
- 节点.js在抓取 HTML 时返回 null
- 具有可抓取内容的 JS 应用(检测搜索机器人服务器端)
- 节点 js 抓取失败
- 使用 Node.Js 中的请求抓取 JavaScript 生成的内容
- 从页面加载的隐藏字段中抓取JS值
- 限制搜索引擎抓取JS链接
- 抓取JS onclick函数的返回值