在Ember 2项目中使用预编译的Handlebars模板

时间:2016-03-31 22:34:54

标签: javascript ember.js handlebars.js htmlbars

我需要在我的ember项目中使用一些预编译的把手模板以及我的普通组件和模板。我已使用ember-cli-build.jsapp.import()文件中加载了预编译的模板。预编译的模板现在显示在Handlebars.templates对象中,我在应用程序声明和应用程序初始化之间的Ember Ember.TEMPLATES["precompiled-template"]文件中映射到app.js

当我检查Ember.TEMPLATES对象时,与其他作为对象的模板不同,预编译模板作为function(context, options)形式的函数存在。

当我尝试使用预编译模板时,没有显示任何内容。有什么想法吗?

编辑1:我说的是小ui模板而不是整个路径模板,我愿意牺牲绑定。

1 个答案:

答案 0 :(得分:0)

我找到了一种方法来使用帮助器将把手模板转换为字符串并创建文档片段。

import Ember from 'ember';

export function helper(data/*, hash*/) {
  let precompiledTemplateFunction = Handlebars.templates[data[0]];
  return fragmentFromString(precompiledTemplateFunction());
}

function fragmentFromString(strHTML) {
  return document.createRange().createContextualFragment(strHTML);
}

export default Ember.Helper.helper(helper);

用法:{{helper 'precompiledTemplate'}}

我正在导入ember-cli-build.js文件中的模板app.import('vendor/path/to/precompiled/template');

我没有通过帮助程序处理传递属性,但我认为它不会那么难。