【问题标题】:EmberJS: issue with a custom template helper and its dependenciesEmberJS:自定义模板助手及其依赖项的问题
【发布时间】:2013-07-26 22:14:43
【问题描述】:

我已经定义了一个自定义模板助手,类似于他们显示的 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

【问题讨论】:

  • 制作一个简单的小提琴将使查找错误变得更加容易。
  • 我知道,而且我总是提供一个……但我很难在这里重现。它在应用程序中发生得相当“深”(对象之间有许多关系)。我只是希望得到有关可能出错的方向,而不是明确的答案。
  • 抱歉,在这种情况下没有人可以帮忙。

标签: ember.js


【解决方案1】:

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

这个错误是由车把助手上的this 引起的。 例如,如果您有这样的模板:

{{someHelper this}}

然后,如果您在视图中,则可以使用 view.context 而不是 this,如果您在控制器中,则可以使用 controller

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2019-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多