ember.js - 如何使用 Ember js 和 Handlebars js 将文本换行?

标签 ember.js wrapper handlebars.js helper

我想将一些文本包装在 block 中。不知道该怎么做。

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

最佳答案

有很多方法可以将文本包装在 block 中,这实际上取决于您的用例。 我假设出于某种原因,从字面上编写 HTML 并不是您想要的。

首先,您可以只返回 Handlebars SafeString,但是如果您要包装用户提供的内容,这会带来安全问题。

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

其次,您可以将其包装在 View 中

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

第三,您可以创建一个用于创建 View 的 Handlebars 助手。

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

请注意,我还没有真正检查过代码,因此可能存在拼写错误

关于ember.js - 如何使用 Ember js 和 Handlebars js 将文本换行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14595364/

相关文章:

javascript - 如何在 Ember CLI 应用程序中访问 Ember 全局变量 'App'?

Ember.js bindAttr 加明文

c++ - 将头文件包含到头文件中而不将其内容暴露给包含程序

javascript - Ember.js:{{#collection}} 和 {{#each}} 之间的区别?

javascript - Handlebars.js:将对象属性作为 Ember.js 组件属性传递

javascript - 来自 Ember 数据的模型未渲染

javascript - 解决后未将 promise 值放入模板

python - 使用 Python 扩展 API 包装复杂的 C++ 类

Java 不可变对象(immutable对象)

python - 在 django 生成的页面中包含 Handlebars 模板