Handlebars.js: グローバル変数を登録します。

作成日 2016年02月22日  ·  7コメント  ·  ソース: handlebars-lang/handlebars.js

テンプレートのグローバル変数があると便利な場合があります。
いくつかの例には、次のようなものが含まれます。

  • アクティブなユーザーオブジェクト。
  • アプリの構成(タイトル、説明、メタ)
  • ルート情報(パス、ハッシュなど)。

次のようなものを追加するのはクールだと思っていました。

var hbs = require("handlebars");

hbs.registerGlobal({
   title: "myapp"
});

これは、おそらく@global.title@title 、または単にtitleを介して、任意のテンプレートで参照できます。

考え?

docs-needed

最も参考になるコメント

@kpdecker template(context, {data: {global: global}})は明示的に文書化されていません。
私が見た中で最も近いのはtemplate({}, {data: {level: Handlebars.logger.WARN}})です

ただし、ドキュメントには、2番目のパラメーターを渡すことができるとは記載されていません

全てのコメント7件

私はこれについてもっと考えていました、そして私はインラインヘルパーを作成することはあなたが望むことをすることができると思います。

var hbs = require("handlebars");
var myGlobal = {
   title: "myapp"
};

hbs.registerHelper('global', function(key){
  return myGlobal[key];
});
{{! in your template }}
<div>{{global "title"}}</div>

そして、あなたはmyGlobalで何でもすることができます
あなたはできる

define('myGlobal', function(){
  return {
    title: "myapp"
  };
});

...
var myGlobal = require('myGlobal');

myGlobal['newKey'] = 'something';

...

var hbs = require("handlebars");
var myGlobal = require('myGlobal');

hbs.registerHelper('global', function(key){
  return myGlobal[key];
});

当然、キーが上書きされるなどの欠点がありますが、それだけです。

ハンドルバー自体の中でこれをサポートするには、わずかな利益のために多くのオーバーヘッドが必要になります、IMO。

@rafdeのヘルパー提案やデータフィールドでのグローバルの受け渡しなど、いくつかのオプションがあります。これらは、上記の提案された構文で実際に機能するはずです。

template(context, {data: {global: global}})

{{@global.foo}}のウィンドウにすべてを公開する必要がありますが、これはテストしていません。これが実際に機能することを検証する必要があります。

@kpdecker template(context, {data: {global: global}})は明示的に文書化されていません。
私が見た中で最も近いのはtemplate({}, {data: {level: Handlebars.logger.WARN}})です

ただし、ドキュメントには、2番目のパラメーターを渡すことができるとは記載されていません

私たちのドキュメントはしばしば不足していますが、あなたが改善を助けたいのであれば、それは素晴らしいでしょう。

これは広範囲にテストされています: https ://github.com/wycats/handlebars.js/blob/master/spec/data.js#L1

非変数オブジェクトでキーと値のペアを定義するだけでは、これを実行できないのはなぜですか?

glabalPair = {title: "Title"};

https://github.com/wycats/handlebars.js/blob/master/spec/data.js#L1が答えでした。 これを閉じますが、ドキュメントを追加する必要があります。

まだ文書化されていませんか?

このページは役に立ちましたか?
0 / 5 - 0 評価