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 だったので、少し奇妙です。しかし、さまざまなコンテキストシフトを試したところ、うまくいきました(マスターにいるからかもしれませんか?)。したがって、このような奇妙な動作に遭遇した場合は、ヘルパーに渡すコンテキストを再確認することをお勧めします。

于 2013-03-30T09:39:12.440 に答える
1

このバグはバグ ( https://github.com/emberjs/ember.js/issues/2948 ) です

thisこのバグはon handlebar ヘルパーによって引き起こされました。たとえば、そのようなテンプレートがある場合:

{{someHelper this}}

次に、代わりにthis、たとえばview.contextビューにいるcontroller場合やコントローラーにいる場合に使用できます。

于 2013-07-26T14:14:43.820 に答える