3

<a href=""></a>ブロック内のテキストをタグに入れるブロック ヘルパーを定義したいと思います。http://handlebarsjs.com/block_helpers.htmlの例を最初に使用しましたが、コードが機能しません。<a href="http://www.example.com">test</a>このブロック ヘルパーの出力として取得するには、何を変更する必要がありますか?

app.js

App = Ember.Application.create();

Handlebars.registerHelper('link', function(options) {
  var result = '<a href="http://www.example.com">' + options.fn(this) + '</a>';
  return Handlebars.SafeString(result);
});

index.html

  <!DOCTYPE html>
  <html lang="en">
    <head>
      <title>Example</title>
    </head>
    <body>
      <script type="text/x-handlebars">
        <p>
        {{#link}}
        test
        {{/link}}
        </p>
      </script>

    </body>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script type="text/javascript" src="js/handlebars.js"></script>
    <script type="text/javascript" src="js/ember.js"></script>
    <script type="text/javascript" src="js/app.js"></script>
  </html>
4

1 に答える 1

5

いくつかの詳細(編集済み):

  • 返す前にの新しいインスタンスを作成するだけです。Handlebars.SafeString@muistooshort のjsfiddle hereをチェックして、達成しようとしていることの実例を確認してください。

  • ブロック ヘルパーはもう少し複雑で、異なるコンテキストでテンプレートのセクションを呼び出す必要がある場合に使用されます。そうでない場合は、通常の Handlebars helpersの構文を使用できます。(この場合は関係ありませんが、今後の参照用に次のコードをここに残します)

app.jsでヘルパーを宣言します。

Ember.Handlebars.registerHelper('link', function(value) {
  var result = '<a href="http://www.example.com">' + value + '</a>';
  return new Handlebars.SafeString(result);
});

index.htmlで、現在のテンプレートを次のように置き換えます。

<script type="text/x-handlebars">
  <p>
    {{link test}}
  </p>
</script>

お役に立てれば!

于 2013-04-02T17:16:04.240 に答える