2013-04-19 11 views

Odpowiedz

4

To musi być wykonane przy użyciu zarówno właściwość obiektu Ember.View attributeBindings i data-backdrop lub 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

Twój przykład wykonuje sztuczkę, ale robi więcej niż dodaje prosty element * statyczny * do elementu. Spowoduje to powiązanie atrybutu z wartością właściwości, a następnie propagowanie zmian właściwości do atrybutu, co może być przesadą w niektórych przypadkach użycia (bootstrap 'data-toggle' anyone?). Podejrzewam, że jedynym sposobem dodania prawdziwego statycznego atrybutu jest 'this. $(). Attr ('data-toggle', 'collapse')' w 'didInsertElement'. – dev

6

Niestety, nie ma wystarczającej reputacji skomentowania odpowiedzi Oli, ale wierzę, nieco lepszy sposób to zrobić, aby nie używać znaków (tekst w cudzysłowie) dla oznaczenia własności przypisują dane Nazwa. Zamiast tego napisz swoją nazwę nieruchomości w camelCase, a Ember automatycznie powiąże ją z łączonym wiązaniem atrybutów. Na przykład:

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

Mam nadzieję, że ma to sens!

+0

Z jakiegoś powodu nie zadziałało to dla mnie. Zgadzam się, że wydaje się, że to Ember Way, ale tego nie zrobiłem (jestem uzależniony od atrybutów w ramach komponentu, a nie widoku, może to zmienia rzeczy?) –

+0

Może aktualizacja Ember'a usunęła tę funkcjonalność? –

+0

@ DuncanWalker której wersji ember używasz? – spinlock