因此,我有以下代码可以访问我的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('first'),我将无法定义。 daryl.get('id')可以正常工作。 daryl.get('0')实际上会返回实际模型的普通旧javascript对象,即我可能希望成为实际的主干模型。为什么是这样?
最佳答案
您的服务器似乎在响应中返回一个数组,因此为什么调用model.get('0')
会返回您真正想要的属性。您或者需要修改服务器的响应以仅返回对象(而不是数组内的对象),或者需要在模型中添加parse
方法以返回响应数组中的第一项。