在我的代码中,我遇到了一个错误。我设置了一个断点来试着看看发生了什么。当我在控制台中检查对象“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
答案 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上)。如果我说我对所发生的事情完全清楚,我会撒谎,但我尝试了各种环境切换,它最终起作用了。
所以我想如果你碰到这样的东西,请仔细检查你帮助者的背景......