2015-01-03 1 views
6

テンプレート内に配置できるMeteorパッケージを作成しようとしています。だから私は最初にヘルパーを登録しようとしました。Meteor - Spacebars.kwとは何ですか(hash:Object)

Template.registerHelper('testHelper', function(a, b) { 
     console.log(a); 
     console.log(b); 
}) 

私は/packages内のパッケージを追加しました、と私は{{testHelper "hello" "meow"}}を追加したとき、私のクライアントのテンプレートで、コンソールは、私が期待したものである、hellomeowをログに記録。私は{{testHelper "hello"}}追加すると

は、私は何も2番目のパラメータとして渡されていないので、コンソールは、 hellonullをログに記録すると予想しました。しかし代わりに helloとオブジェクトを返しました - Spacebars.kw {hash: Object}

これはなんですか?Spacebars.kw {hash: Object}ですか?代わりにnullを返信したい場合はどうすればよいですか?

答えて

13

Spacebars.kwには、入力パラメータのハッシュを持つhashオブジェクトが含まれています。

流星がメソッドを一致させるには2つの方法、いずれかのパラメータが直接入力される場合で直接マッチングされ、例えば{{testHelper "variable1" "variable2" "variable3"}}を有し、それぞれの変数1-3、BおよびCまでマッチングなどfunction(a,b,c)として一致だろう。これは、AがSpacebars.kwオブジェクトであるfunction(a)に単一のパラメータを与える

{{testHelper a="variable1" b="variable2" c="variable3"}} 

入力の第二の方法は、ハッシュを使用しています。

は、サブオブジェクトを有することになるSpacebars.kwオブジェクトが一致構造とhashと呼ば:

{ "a" : "variable1", 
    "b" : "variable2", 
    "c" : "variable3" } 

流星直接最初PARAMを一致しようとし、それ以降のパラメータが第二包みハッシュとしてアップマッチします{{testHelper 'hello'}}を使用する場合のように、入力は空です。ここで、bはnullになります。代わりにハッシュとして与えられます。

これは一般的に次のように与えられます。したがって、Spacebars.kwオブジェクトとしてbを取得した場合、2番目の入力がないとみなすことができます。代替では、ハッシュスタイル宣言を使用して、ハッシュ値がnullであれば、直接チェックすることができます:

{{testHelper text="Hello"}} 
{{testHelper text="Hello" othertext="Hellooo"}} 

とヘルパー:

Template.registerHelper('testHelper', function(kw) { 
    console.log(kw.hash.text); 
    console.log(kw.hash.othertext); 
}); 
+0

もう一度あなたにAkshatありがとう、あなたがスターです!私はハッシュスタイルの宣言に従っており、それは素晴らしい作品です。私は新しい質問として投稿するフォローアップの質問をしています。ちなみに、この「Spacebars.kw」は文書化されていますか?私はドキュメントでそれを見つけることができません、多分私たちはドキュメントにこれを追加することができますか? – dayuloli

+0

kwは何を表していますか? –

関連する問題