EmberJS:模型'isLoaded'但我无法访问其属性

时间:2013-03-28 20:31:11

标签: ember.js ember-data

在我的代码中,我遇到了一个错误。我设置了一个断点来试着看看发生了什么。当我在控制台中检查对象“foo”时,我得到:

foo.toString() > "<App.Foo:ember661:174009>" // all good
foo.get('isLoaded') > true 
foo.get('isValid') > true 

然而:

foo.get('name') > null // Whereas it definitely has a name.

当我查看开发人员工具中的“网络”选项卡时,我可以看到加载记录仍在“完成”。对于相应的网址,它会显示:“待处理”。

这个型号是什么状态?你怎么知道一个模型何时“完全”准备好了?

更新:根据我对Mike的评论,我应该补充说我正在registerBoundHelper函数中检查此记录。所以我猜有一个我缺少的上下文问题。事实上:

... foo template ...
{{ name }} // properly set to a value
{{ my_helper this }}

... helpers ...
Ember.Handlebars.registerBoundHelper('my_helper', function(foo) {
    return foo.get('name'); // name property is null!!
}); 

我一定错过了一些明显的东西?

谢谢, PJ

2 个答案:

答案 0 :(得分:1)

  

这个型号是什么状态?

鉴于您提供的信息无法分辨,但要从控制台中找到您可以试试这个:

foo.stateManager.get('currentPath') > should be something like "rootState.loaded.saved"

然后查看states.js source code了解该州的详细信息。

  

您如何知道模型何时“完全”准备好了?

取决于完全准备好的含义。一些技巧可以帮助你了解它们是什么:

显示模型的原始数据

foo.get('data')
foo.get('data.attributes')

当记录在状态

之间转换时获取控制台日志输出
record.set("stateManager.enableLogging", true)

答案 1 :(得分:0)

回答我自己的问题,万一它可以帮助别人......

这种奇怪的行为来自帮助者的上下文问题。它在视图中非常“深入”(几个嵌套级别),我使用的是{{partial}}和新{{render}}的组合,您现在可以多次使用(在master上)。如果我说我对所发生的事情完全清楚,我会撒谎,但我尝试了各种环境切换,它最终起作用了。

所以我想如果你碰到这样的东西,请仔细检查你帮助者的背景......