3

在我的代码的某个地方,我遇到了一个错误。我放了一个断点来尝试看看发生了什么。当我在控制台中检查对象“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.

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

这个模型状态是什么?您如何知道模型何时“完全”准备好?

更新:根据我对 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

4

2 回答 2

1

这个模型状态是什么?

鉴于您提供的信息无法判断,但要从控制台中找出,您可以尝试以下操作:

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

然后查看states.js 源代码以了解有关该状态的详细信息。

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

取决于您的意思完全准备好。一些技巧可以帮助您了解是什么:

显示模型的原始数据

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

当记录在状态之间转换时获取控制台日志输出

record.set("stateManager.enableLogging", true)
于 2013-03-28T22:20:31.053 回答
0

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

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

所以我想如果你遇到这样的事情,请仔细检查你的助手的上下文......

于 2013-03-29T20:53:45.777 回答