3

我想定义一个块助手,将块中的文本放入<a href=""></a>标签中。我使用了http://handlebarsjs.com/block_helpers.html中的示例作为开始,但我的代码不起作用。<a href="http://www.example.com">test</a>作为这个块助手的输出,我必须改变什么?

应用程序.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);
});

索引.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以及您要实现的工作示例。

  • 块助手稍微复杂一些,当需要调用具有不同上下文的模板部分时使用。如果不是您的情况,您可以使用常规 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 回答