Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Backbone.js model.get()返回';未定义';即使我可以在console.log中看到属性_Javascript_Backbone.js - Fatal编程技术网

Javascript Backbone.js model.get()返回';未定义';即使我可以在console.log中看到属性

Javascript Backbone.js model.get()返回';未定义';即使我可以在console.log中看到属性,javascript,backbone.js,Javascript,Backbone.js,我有一个模型实例,我在其中设置了另一个模型实例,即model.set('rsvp',new App.rsvp) 当我迭代集合以在视图中生成它们的列表时,当调用model.rsvp.get('attenting')时,我会得到undefined 然而,当我执行console.log(model.rsvp)时,我得到了以下信息: Rsvp _changing: false _escapedAttributes: Object _moreChanges: false _previousAttribut

我有一个模型实例,我在其中设置了另一个模型实例,即
model.set('rsvp',new App.rsvp)

当我迭代集合以在视图中生成它们的列表时,当调用
model.rsvp.get('attenting')
时,我会得到
undefined

然而,当我执行
console.log(model.rsvp)
时,我得到了以下信息:

Rsvp
_changing: false
_escapedAttributes: Object
_moreChanges: false
_previousAttributes: Object
_setting: false
attributes: Object
    attending: true
    created_at: "2012-03-28T09:42:22-05:00"
    event_id: 20
    id: 12
    updated_at: "2012-03-28T09:42:22-05:00"
    user_id: 3
__proto__: Object
cid: "c53"
id: 12
__proto__: Rsvp
因此,对象似乎没有问题,但是get返回未定义的


我必须承认我的Javascript技能仍然很弱。我在这里遗漏了什么?

从理论上讲,您所做的应该是可行的,但是绕过属性并直接在模型实例上存储属性可能不是一个好主意。这是一个例子。我猜您的模型实例是通过代码中的其他地方从源数据通过
fetch
重新创建的,因此
model.rsvp
属性将消失。该或
模型
与您认为的实例不同。

console.log(Object)
可以欺骗您。在调用
console.log
时,它不会向您显示
对象的状态

检查并打开控制台。您可以看到
console.log
如何在脚本末尾而不是
console.log
调用时显示
对象的状态

要获得更可靠的信息,请使用更简单的值调用控制台.log

(通过OSX测试的是Chrome、Firefox和Safari)


阅读本文了解更多详细信息:

model.rsvp=foo
(让我们调用这个代码位#1),它等价于
model['rsvp']=foo
model.set({'rsvp':foo})不同(代码位#2)。如果要将另一个模型实例
foo
(或其他对象或值)固定到模型实例
model
,请使用代码位#1或其等效项。如果要将属性值对添加到最终可能永久存储在某处的模型实例中,请使用代码位#2。同样,如果使用
model.rsvp=foo,则只需要定义
model.rsvp
模型['rsvp']=foo

我最初尝试先使用.set,结果相同。和
console.log
s背对背。所以它显示实例,然后在我尝试获取属性时显示undefined。所以我不知道在这段时间内它会被重置。你说得对。调用$.when时出现错误,但我不知道这是问题的根源,因为console.log看起来不错。显然不好。谢谢