我应该从哪里开始,模型在那里但是......它们不是?

时间:2011-12-21 18:13:46

标签: 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])

输出

actions.models [ Action ]
actions.models.length 0
first actions.models undefined

如果我向这段代码添加一个2秒钟的setTimeout,我得

actions.models [ Action ]
actions.models.length 1
first actions.models Action

我不明白这是怎么发生的。我不知道从哪里开始寻找,甚至可以帮助你们发帖看看。

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

另请注意,要访问骨干网模型,您通常会使用name = mymodel.get('name')或收集item = mycollection.get('someid')

如果您发布一些可测试的代码以及您要完成的任务,我确定有线索的人能够帮助您。