2

我想在块中包装一些文本。无法弄清楚如何做到这一点。

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,Handlebars 1.0.rc.2,Jquery 1.9.0

4

1 回答 1

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)
});

警告,我实际上没有检查代码,所以可能有错别字

于 2013-01-30T03:13:24.710 回答