我已经定义了一个类似于他们展示in the Ember guides的自定义模板帮助器。
Ember.Handlebars.registerBoundHelper('fullName', function(person) {
return person.get('firstName') + ' ' + person.get('lastName');
}, 'firstName', 'lastName');
然而,每次加载页面时,都会出现一个奇怪的错误:
Uncaught TypeError: Cannot read property '0' of null
我试图追踪它,我想知道它是否可能是一个上下文问题。实际上,当我打破Ember.Handlebars.registerBoundHelper时,我可以看到观察者正在尝试注册' firstName'和' lastName'没有正确的道路。他们是" .firstName"和" .lastName"这并不代表什么...
你知道可能会发生什么吗?
另外,我应该添加:如果删除依赖项:
Ember.Handlebars.registerBoundHelper('fullName', function(person) {
return person.get('firstName') + ' ' + person.get('lastName');
});
我可以帮助我。当我做person.toString()时,似乎"正常" (使用正确的ID等),但是,当我在控制台中执行person.get(' firstName')时,我得到null,就像记录没有完全加载一样。奇怪。
由于
PJ
答案 0 :(得分:1)
如果它可以帮助其他人:这是一个背景问题。由于助手中的“人”确实是App.Person,这有点奇怪。但我尝试了各种上下文转换,最终工作(可能是因为我在主人?)。因此,如果您遇到类似这样的奇怪行为,您可能需要仔细检查您传递给帮助程序的上下文。
答案 1 :(得分:1)
此错误是一个错误(https://github.com/emberjs/ember.js/issues/2948)我为此提供了修复:https://github.com/seeweer/ember.js/commit/0226e1c605f84e469e56c7c397599a4295946094
此错误是由车把助手上的this
引起的。
例如,如果您有这样的模板:
{{someHelper this}}
如果您在视图中,则可以使用this
而不是view.context
,如果您在控制器中,则可以controller
使用。