独自の Handlebars ヘルパーを作成しようとしていますが、引数を渡すのに問題があります。コンテキストとして、Ghost ( http://tryghost.org )をハッキングしようとしていますが、これはより一般的なハンドルバーの問題であると思われます。
働く
まずは実用例。これが私のテンプレートの関連部分です:
<h1>{{myHelper}}</h1>
これが私のHandlebars.registerHelper
方法です(ゴーストは名前を変更しますが、同じです):
ghost.registerThemeHelper("myHelper", function() {
console.log(this.posts[0].title); // outputs "Welcome to Ghost" to console
return this.posts[0].title; // returns "Welcome to Ghost"
})
動作しない
以下は私が達成したいものです。テンプレート:
<h1>{{myHelper "title"}}</h1>
<h3>{{myHelper "slug"}}</h3>
メソッドに引数を渡そうとすると、変数の置換に失敗します。
ghost.registerThemeHelper("myHelper", function(myData) {
console.log(this.posts[0].myData); // outputs "undefined" to console
return this.posts[0].myData; // returns nothing
})
「タイトル」のような文字列を式で評価するために渡す適切な方法は何ですか?
activateTheme()
好奇心旺盛な Ghost ユーザーのために、関数内に独自のヘルパーを登録しました。ghost/core/server.js