2013-04-19 7 views
5

Ember.Viewに静的なデータ属性を割り当てる必要があります。{{view }}タグではなく、Viewオブジェクトでどのように設定するのですか。静的データ属性をエムバービューにどのように割り当てますか?

App.MessagesFormView = Ember.View.extend({ 
    tagName: 'div', 
    classNames: ['modal', 'fade'], 
    didInsertElement: function() { 
    this.$().modal('show') 
    }, 
    willDestroyElement: function() { 
    this.$().modal('hide') 
    }, 
}) 

答えて

4

これはEmber.ViewオブジェクトのattributeBindings及びdata-backdrop又はdata-whatever性の両方を使用して行われなければなりません。

App.MessagesFormView = Ember.View.extend({ 
    tagName: 'div', 
    classNames: ['modal', 'fade'], 
    // Set a data attribute, of a view, requires both an attribute binding and 
    // an attribute assignment 
    attributeBindings: ['data-backdrop'], 
    'data-backdrop': 'static', 
    didInsertElement: function() { 
    this.$().modal('show') 
    }, 
    willDestroyElement: function() { 
    this.$().modal('hide') 
    }, 
}) 
+1

あなたの例はトリックを行いますが、単純な*静的*属性を要素に追加する以上のことを行います。属性をプロパティ値にバインドし、属性の変更をその属性に伝播します。これは、いくつかのユースケース(ブートストラップ '誰でもデータトグルするのですか?本当の静的属性を追加する唯一の方法は、 'didInsertElement'の' this。$()。attr( 'data-toggle'、 'collapse')です。 – dev

6

残念ながら、私はオラの答えにコメントするのに十分な評判を持っていないが、私はこれを行うには、わずかに良い方法は、データ属性のプロパティを示すために、文字列(引用符内のテキスト)を使用しないことであると考えてい名。代わりに、あなたのプロパティ名をcamelCaseに書くとEmberはそれをハイフネーションされた属性バインディングに自動的にバインドします。例:

App.MessagesFormView = Ember.View.extend({ 
    tagName: 'div', 
    attributeBindings: ['data-backdrop'], 
    dataBackdrop: 'static', // Binds to data-backdrop. Awesome! 
}); 

私はそれが理にかなっています!

+0

何らかの理由で、これは私のためには機能しませんでした。私はそれがEmber Wayのように見えることに同意しますが、それをやっていませんでした(私はView内ではなく、Component内の属性を束縛しているかもしれません) –

+0

Emberのアップデートでこの機能が削除されたのでしょうか? –

+0

@DuncanWalkerどのバージョンのemberを使用していますか? – spinlock

関連する問題