1

我已经定义了一个自定义模板助手,类似于它们在 Ember 指南中显示的内容。

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

4

2 回答 2

1

以防它帮助其他人:这是一个上下文问题。这有点奇怪,因为助手中的“人”确实是一个 App.Person。但是我尝试了各种上下文转换,最终都奏效了(可能是因为我在 master 上?)。因此,如果您遇到这样的奇怪行为,您可能需要仔细检查您传递给助手的上下文。

于 2013-03-30T09:39:12.440 回答
1

这个错误是一个错误(https://github.com/emberjs/ember.js/issues/2948)我为此提供了修复:https ://github.com/seeweer/ember.js/commit/0226e1c605f84e469e56c7c397599a4295946094

这个错误是由thison handlebar helper 引起的。例如,如果您有这样的模板:

{{someHelper this}}

this然后,例如view.context,如果您在视图中或controller在控制器中,则可以代替您使用。

于 2013-07-26T14:14:43.820 回答