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 我应该从哪里开始,模型在那里,但是。。。它们不是';T_Javascript_Backbone.js_Coffeescript - Fatal编程技术网

Javascript 我应该从哪里开始,模型在那里,但是。。。它们不是';T

Javascript 我应该从哪里开始,模型在那里,但是。。。它们不是';T,javascript,backbone.js,coffeescript,Javascript,Backbone.js,Coffeescript,在使用主干网时,我发现有一个问题,一些数据被保留为空白,所以我写这篇文章是为了看看发生了什么 console.log('actions.models', this.model.actions.models) console.log('actions.models.length', this.model.actions.models.length) console.log('first actions.models', this.model.actions.models[0]) 输出 actio

在使用主干网时,我发现有一个问题,一些数据被保留为空白,所以我写这篇文章是为了看看发生了什么

console.log('actions.models', this.model.actions.models)
console.log('actions.models.length', this.model.actions.models.length)
console.log('first actions.models', this.model.actions.models[0])
输出

actions.models [ Action ]
actions.models.length 0
first actions.models undefined
如果我给这个代码加上setTimeout,比如说2秒,我会得到

actions.models [ Action ]
actions.models.length 1
first actions.models Action
我不明白这怎么会发生。我不知道从哪里开始寻找,甚至不知道有什么东西对你们有帮助


如果有人能帮我指出正确的方向,我将不胜感激。非常感谢。

不知道你想做什么,但无论如何。。当您将对象转储到控制台日志时,请注意这样一个事实,即由于对象是通过引用传递的,因此在日志中检查对象所得到的结果将是该对象最终的结果。假设您想要记录对象的状态,您可能应该在记录时尝试序列化它。例如
console.log“mymodel:”,JSON.stringify(mymodel.attributes)

还要注意,要访问主干模型,您通常会使用
name=mymodel.get('name')
,或者对于集合
item=mycollection.get('someid')


如果你发布了一些可测试的代码和你想要完成的事情,我相信有人会提供线索来帮助你。

不确定你想要做什么,但无论如何。。当您将对象转储到控制台日志时,请注意这样一个事实,即由于对象是通过引用传递的,因此在日志中检查对象所得到的结果将是该对象最终的结果。假设您想要记录对象的状态,您可能应该在记录时尝试序列化它。例如
console.log“mymodel:”,JSON.stringify(mymodel.attributes)

还要注意,要访问主干模型,您通常会使用
name=mymodel.get('name')
,或者对于集合
item=mycollection.get('someid')


如果您发布了一些可测试的代码以及您试图完成的内容,我相信有人会提供线索来帮助您。

您是否通过Ajax函数加载模型,如
fetch
?如果是这样的话,在调用Ajax函数的回调之前,您不能指望加载数据,例如

actions.fetch {success: -> console.log actions.models.length}

您是否通过Ajax函数加载模型,比如
fetch
?如果是这样的话,在调用Ajax函数的回调之前,您不能指望加载数据,例如

actions.fetch {success: -> console.log actions.models.length}

我不认为
console.log
的异步性是这里的答案,因为
actions.models.length
将通过值而不是引用传递(不需要
JSON.stringify
),我不认为
console.log
的异步性是这里的答案,因为
actions.models.length
将通过值而不是引用传递(不需要
JSON.stringify
),它们将通过WebSocket从服务器中推送。原理相同。WebSocket是非阻塞的。某个地方有一个回调,在调用该回调之前,您无法指望加载的模型。websocket数据将添加到父模型,并且这些事件将绑定到该父模型上的添加事件。我假设add事件在收到数据之前不会触发——如果这不是真的,那么在这种情况下我如何构建回调?不管怎样,感谢您的引导,我将尝试运行更多的测试。您刚才说过:与其直接绑定到WebSocket回调,您只需绑定到“添加”上的
操作即可。
这些操作通过WebSocket从服务器上推送。原理相同。WebSocket是非阻塞的。某个地方有一个回调,在调用该回调之前,您无法指望加载的模型。websocket数据将添加到父模型,并且这些事件将绑定到该父模型上的添加事件。我假设add事件在收到数据之前不会触发——如果这不是真的,那么在这种情况下我如何构建回调?不管怎样,感谢您的引导,我将尝试运行更多的测试。您刚刚说过:与其直接绑定到WebSockets回调,您只需绑定到
actions.on'add'