因此,我有以下代码可以访问我的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方法以返回响应数组中的第一项。

09-25 17:28