2016-03-31 8 views
1

通常のコンポーネントとテンプレートとともに、Emberプロジェクトでプリコンパイルされたハンドルバーテンプレートを使用する必要があります。私はember-cli-build.jsファイルにプリコンパイルされたテンプレートをapp.import()を使ってロードしました。プリコンパイルされたテンプレートは、Handlebars.templatesオブジェクトに表示されています。私は、app.jsファイルのEmber.TEMPLATES["precompiled-template"]にマッピングされています。アプリの宣言とアプリの初期化の間にファイルがあります。Ember 2プロジェクトでプリコンパイルされたハンドルバーテンプレートを使用する

Ember.TEMPLATESオブジェクトをチェックすると、プリコンパイルされたテンプレートには、オブジェクトである他のテンプレートとは異なり、function(context, options)という形式の関数があります。

プリコンパイルされたテンプレートを使用しようとすると、何も表示されません。何かご意見は?

編集1:私は、経路テンプレート全体ではなく、小さなUIテンプレートについて話しています。私はバインディングを犠牲にして喜んでいます。

+0

テンプレートをどのようにコンパイルしましたか? ember.jsと同じバージョンのember-template-compiler.jsを使用しましたか? – Gaurav

答えて

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'}}

私は私がヘルパーけど、ドンを通じて属性を渡すに対処していない燃えさし-CLI-build.jsファイルapp.import('vendor/path/to/precompiled/template');

にテンプレートをインポートしていますそれは難しいと思う。

関連する問題