如何使用Ember js和Handlebars js在块中包装文本?

时间:2013-01-30 01:48:30

标签: ember.js wrapper handlebars.js helper

我想在块中包装一些文本。无法弄清楚该怎么做。

JS:

    Handlebars.registerHelper('mywrap', function (options) {
      return '<p class="TEST" >' + options.fn(this) + '</p>';
    });

模板:

    {{#mywrap}}
        This text must be wrapped
    {{/mywrap}}

最终的HTML应该是这样的:

<p class="TEST">This text must be wrapped</p>

Ember v1.0.0-pre4, 把手1.0.rc.2, Jquery 1.9.0

1 个答案:

答案 0 :(得分:3)

有很多方法可以在一个块中包装文本,这取决于你的用例。 我假设由于某种原因,字面上写HTML不是你想要的。

首先,您只需返回Handlebars SafeString,但是如果要包装用户提供的内容,则会出现安全问题。

Ember.Handlebars.registerHelper('mywrap', function (options) {
  return new Handlebars.SafeString('<p class="TEST" >' + options.fn(this) + '</p>';)
});

其次,您可以将其包装在视图中

{{#view classNames="TEST" tagName="p"}}
  This text must be wrapped
{{/view}}

第三,您可以创建一个创建视图的把手帮助器。

Ember.Handlebars.registerHelper('mywrap', function (options) {
  var view = Ember.View.extend({tagName:"p",classNames:"TEST"})
  return Ember.Handlebars.helper.view.call(this, view, options)
});

警告,我实际上没有检查过代码,因此可能存在拼写错误