2012-04-27 5 views
2

のは、ヘルパーHandlebars.js:複数のハッシュを引数としてHandlebarsヘルパーに渡すことは可能ですか?

Handlebars.registerHelper("linkTo", function(request, params) { 
    return window.linkTo(request, params); 
}); 

次私が宣言したとしましょうどのように私は(可能であれば)ちょうど(ちょうどショーのために、正しくない構文)ビューで

<a href="{{link_to module='products' controller='view', product=product.id artist= artist.id}}">foo</a> 

カンマをこのような何かを行うことができます2つのハッシュの間の分離を象徴している。

答えて

1

Handlebars.jsがパラメータを使用するため、複数のハッシュを分離することができないためです。

0

オブジェクトリテラルの一部として渡すことができる構造体にパラメータを渡す方法が分かっていれば、それが機能することがわかります。たとえば、次のように

{ 
    "params" : { 
    "module" : "products", 
    "controller" : "view", 
    "product" : 5, 
    "artist" : 25 
    } 
} 

プラスこのヘルパー:

Handlebars.registerHelper("link_to", function(params) { 
    var result = ""; 
    var insertAmpersand = false; 

    for (var prop in params) { 
     if (insertAmpersand) { 
      result += "&"; 
     } else { 
      insertAmpersand = true; 
     } 

     result += prop + "=" + params[prop]; 
    } 
    return result; 
}); 

はそうのように呼び出すことができます:

{{link_to params}} 

生成するには:

module=products&controller=view&product=5&artist=25 

明らかにあなたがリファインしたいですそれが物事が正しいものだったようにそれの周りに印をつけるなど、あなたのために働くようなものはありますか?

+0

ジョン、これは残念ながら助けにはなりません。私はリクエストとparamsを別々にする必要があります。そうでなければ、ヘルパーはプロパティがどこに属しているかを知らないのです。あなたの解は、すべてがparamsの一部であると単純に仮定します。現時点では、私はコントローラ内でリクエストオブジェクトを準備し、params(viewのループで動的に埋められる)に "options"ハッシュを使用する回避策を実装しました。私の質問に対する答えは、Handlebars.jsがパラメータを使用する方法のために「いいえ」であり、複数のハッシュを分離する方法がないようです。 –

関連する問題