6

EmberJS の最新リリースの後、v1.9.0Handlebars から HTMLbars に移行しようとしています。私が非常に難しいと感じているのは、ドキュメントの欠如です。

非常に単純なヘルパーを実装しようとしています。

たとえば、次のハンドルバー ヘルパーを使用します。

HTML

<div id="main"></div>

<script type="text/x-handlebars" data-template-name="index">
    {{logIt test}}
    <h1>{{test}}</h1>
</script>

JS

App = Ember.Application.create({
    rootElement: '#main'
});

    App.IndexRoute = Ember.Route.extend({
        setupController: function(controller){
            controller.set('test', 'mytest');
        }
    });

    Ember.Handlebars.registerHelper("logIt", function(something) {
        console.log(something);
    });

JS フィドル: http://jsfiddle.net/sisir/p463q2L8/

どうすればhtmlbarに変換できますか?

4

4 に答える 4

4

Ember 1.10.0 の時点で、この質問は を実行することで解決されEmber.HTMLBars.makeBoundHelper(theHelperFunction)ます。

編集: Ember 1.13.6 (2015 年 7 月 31 日) 以降、これを使用することは非推奨としてフラグが立てられています。

非推奨: Ember.HTMLBars._registerHelper の使用は非推奨です。ヘルパー (ダッシュのないものでも) は自動的に解決されます。[非推奨 ID: ember-htmlbars.register-helper]

于 2015-03-10T10:07:14.160 に答える
4

Ember 1.13 の時点で、2 つの API があります: http://emberjs.com/blog/2015/06/12/ember-1-13-0-released.html#toc_new-ember-js-helper-api

最も単純でより一般的な構文は次のとおりです。

export default Ember.Helper.helper(function(params, hash) {
  return params.join(' ');
});

ヘルパーは 2 つの引数を受け取ります。params はヘルパーに渡される順序付けされたパラメーターで、hash にはキーと値のオプション (title="Mr." など) が含まれます。

于 2015-07-20T21:45:28.160 に答える
1

最新のemberjs ガイドにあるEmber.Handlebars.helperをそのまま使用できると思います。このjsbinは htmlbars を使用しており、動作します。これはjsbinのヘルパーです

AppLogItHelper = Ember.Handlebars.helper("logIt", function(something){
  console.log(something);
});

ember-cliを使用している場合、自動生成されますが、それはjsbinでは機能しませんが、私の ember-cli アプリでは機能する Ember.Handlebars.makeBoundHelper を使用します。

于 2015-02-21T21:31:22.583 に答える
0

非常に重要な目新しさは、HTMLBars に subexpressionがあることです! Ember 1.10 以降は HTMLBars に切り替えられたため、代わりに Ember.HTMLBars.makeBoundHelper を使用する必要があります Ember.Handlebars.registerHelperEmber.Handlebars.registerHelperただし、Ember 1.10.1 バージョンから引き続き使用できます。

新しいアプローチ:

App.XEqHelper = Ember.HTMLBars.makeBoundHelper(function(params, hash, options, env) {
    return params[0] === params[1];
    });

テンプレートから次のように呼び出します。

{{#if (x-eq order 'delivery_order')}}
    Need a delivery
{{/if}}
于 2015-07-30T21:14:55.127 に答える