2013-08-12 6 views
8

Powiedzmy mam coś takiego:dodawania atrybutów do elementu wejściowego w kierownicy (używany z ember.js 1.0)

{{input value=someModel }} 

A potem chcę dodać prosty atrybut required HTML 5 do wejścia.

Jak to zrobić?


Zauważ, że próbowałem następujące warianty bez powodzenia:

{{input value=someModel required }} <!-- doesn't parse --> 

{{input value=someModel required='required' }} <!-- doesn't render the attribute --> 

{{view Ember.TextField valueBinding=someModel 
    required='required' }} <!-- doesn't render the attribute --> 

<input required {{bindAttr value=someModel}} 
    /> <!-- doesn't update the model, as expected --> 

Aktualizacja: Ta kwestia była dla Ember 1.0.

Odpowiedz

5

Aby globalnie dodać wsparcie dla dodatkowych atrybutów można ponownie otworzyć Ember.TextField

http://emberjs.com/api/classes/Ember.TextField.html

+3

To jest straszne! (co nie jest twoją winą, dzięki za wskazanie) - Jakiś pomysł, dlaczego tak jest? i czy istnieje sposób na otwarcie tego, co dodaję? – Meligy

+0

Nie wszystkie przeglądarki obsługują 'wymagany', więc struktura jest dostarczana z minimalnym zestawem, pozwalając programistom na dodawanie dodatkowych atrybutów, jeśli wiedzą, że będą kierowane tylko na przeglądarki, które go obsługują. –

+2

To może być temat dla Dyskursu, ale tak naprawdę, po prostu uważam, że nie ma sensu/korzyści w ograniczaniu tego, co użytkownik może zrobić z ich znacznikami (o ile nie jest to kod, np. Nie są to wyrażenia Handlebars). Zgaduję, że jest to efekt uboczny pewnych ograniczeń projektowych w bibliotece, jeśli miałoby to być w ten sposób jako funkcja, która byłaby tylko dodaniem tarcia IMHO. – Meligy

5

najpierw trzeba dodać wsparcie dla wymaganego atrybutu:

Ember.TextSupport.reopen({ 
    attributeBindings: ["required"] 
}) 

Następnie w Twój widok:

{{view Ember.TextField required="required"}} 
8

Używam Ember w wersji 1.5.1 i required = "required" wydaje się teraz działać dobrze. Ten markup:

{{input class="form-control" value=firstName autofocus="autofocus" required="required"}} 

... czyni to:

<input id="ember392" class="ember-view ember-text-field form-control" autofocus="autofocus" required="required" type="text"> 
+0

Dzięki, to zadziałało dla mnie na Ember 2.7 – rmcsharry