2012-04-25 7 views
2

私はHandlebarsヘルパーを持っていて、番号を取り、クラス名を返します。 foobarが存在する可能性があるので、ヘルパーを実行したいです。私の最初の試みでした:Ember.jsを持つテンプレートのifヘルパーの引数として、バインドされていないプロパティを使用するにはどうすればよいですか?

{{#each content}} 
    <div class="other_class {{#if foobar}}{{my_helper foobar}}{{/if}}"></div> 
{{/each}} 

をMetaMorphがifヘルパーがあるスクリプトタグプレースホルダを挿入するので、これは動作しません。私の第二の試みでした:

{{#each content}} 
    <div class="other_class {{my_helper foobar}}"></div> 
{{/each}} 

foobarには存在しない場合、文字列"foobar"my_helperに渡されるので、これも動作しません。 は、それをバインドせずに、したがってスクリプトタグプレースホルダなしで値をレンダリングすることを知っています。バインドされていない方法でifを使用する方法はありますか?

答えて

2

あなたは計算されたプロパティを作成し、ビューのclassNameBindingsに追加し、http://jsfiddle.net/pangratz666/MvpUZ/を見ることができる:

App.MyView = Ember.View.extend({ 
    classNameBindings: 'omg'.w(), 

    omg: function(){ 
     var foobar = Ember.getPath(this, 'content.foobar'); 
     return (foobar && foobar === 42) ? 'my-class-name' : null; 
    }.property('content.foobar') 
}); 
+2

これはうまくいきますが、私は '{{#unboundif foo}} {{/ unboundif}}'のようなものを好むでしょう。 – hekevintran

0

このためのヘルパーがあります。 unboundIfと呼ばれています:documentation

あなたはこのようにそれを使用することができます参照してください。

{{#unboundIf "content.shouldDisplayTitle"}} 
    {{content.title}} 
{{/unboundIf}} 

式が一度だけ評価されます。

関連する問題