0

Emberプロジェクトに次のライブラリを使用しています。

DEBUG: ------------------------------- 
DEBUG: Ember.VERSION : 1.0.0
DEBUG: Handlebars.VERSION : 1.0.0
DEBUG: jQuery.VERSION : 2.0.2
DEBUG: ------------------------------- 

ブロック ヘルパー内で CSS クラス バインディングを作成したかったのでHandlebars、アプリケーションのテンプレートを一緒に困惑させたときに、奇妙な (?) 動作を発見しました。どういうわけか、これは期待どおりに機能しないようです:Ember{{with}}

...
{{#with controller.currentData}}
  <div class="mydata-container" {{bind-attr class="this.hasError:error:ok"}}>
    {{this.foo}} - {{this.bar}}
  </div>
{{/with}}
...

これ<div/>は常に次のように表示されますdata-bindattr-666=666(もちろん数は増えています)が、クラスが「注入」されることはありません。this(データの表示にも機能するキーワードを省略しても違いはありません)。しようとする{{log this.hasError}}と、待望の結果が得られます(true:false)。

{{with}}次のように、ヘルパーなしでテンプレートを作成すると:

...
<div class="mydata-container" {{bind-attr class="controller.currentData.hasError:error:ok"}}>
    {{controller.currentData.foo}} - {{controller.currentData.bar}}
</div>
...

期待どおりに動作します。

これは既知の問題/バグEmberですか?

4

1 に答える 1

2

あなたの問題は{{#with}}ビューヘルパーにあるとは思いません。{{bind-attr class=...}}ただし、 とclass="mydata-container"html プロパティを同時に宣言しているためです。

静的クラスを使用する必要がある場合は、先頭にコロンを付ける必要があります。たとえば、{{bind-attr class=":static-class other-dynamic-classes"}}。これはここにも文書化されています。

更新されたコードは次のようになります。

{{#with controller.currentData}}
  <div {{bind-attr class=":mydata-container this.hasError:error:ok"}}>
    {{this.foo}} - {{this.bar}}
  </div>
{{/with}}

役立つことを願っています

于 2013-10-30T12:24:25.503 に答える