EmberJS - 记录未定义绑定的方法

时间:2013-07-17 14:57:57

标签: ember.js

如果您引用不存在的属性,是否有办法让Ember记录警告或错误?目前,如果拼错了车把模板中绑定的属性的名称,则没有警告,它只是没有显示任何内容,并且很难找到哪个属性不正确。

我启用了LOG_BINDINGS,这有点帮助,但有很多不相关的东西可以解决。

2 个答案:

答案 0 :(得分:1)

我找不到任何一般的内置调试,但有一种机制可以自己添加。

当'get'调用返回undefined时,Ember.Object会调用方法'unknownProperty'。您可以将console.warn添加到此方法以记录该属性。该文档将其描述为一种进行自定义抽象方法类型处理的方法。

http://emberjs.com/api/classes/Ember.Observable.html#method_get

Ember.Object.reopen(
  unknownProperty: (property) ->
    unless property is 'App' or property is 'Ember'
      console.warn "Unknown property #{property} in #{@toString()}"
)

注意过滤全局命名空间'App'和'Ember' - 所有对全局属性的调用仍然通过这个界面,但是对于我们关心的东西,它们是红色的鲱鱼。

不幸的是,如果你试图通过重新打开Ember.Object本身来做到这一点,你会得到一堆你不关心的垃圾,因为显然这种情况一直在发生,特别是在EventManager类中。我通过将它应用于Ember.ArrayController,Ember.ObjectController和我所有模型继承的Model类来解决这个问题。

每次我不小心将“hight”键入车把而不是“height”时,我现在在控制台上得到一条简洁的警告信息而不是空白页

在生产解决方案中,我想假设将其与构建中的某种“调试”选项相关联。

答案 1 :(得分:0)

一半解决方案可能是在使用之前使用log把手助手来记录属性,遗憾的是,不存在的属性导致模板根本不显示。这是车把不显示错误的常见问题。

{{log myProperty}}