Próbuję utworzyć wejście select i przekazać wybrany obiekt do zdarzenia zmiany w widoku. Przykład kontaktu z emberem jest następujący: <ul>
, ale po wybraniu widok musi znajdować się poza nim, w przeciwnym razie zmiana nie zostanie wywołana.wybierz rozwijane z ember
Tu jest widok JS:
App.SelectView = Ember.View.extend({
change: function(e) {
//event for select
var content = this.get('content');
console.log(content);
App.selectedWidgetController.set('content', [content]);
},
click: function(e) {
//event for ul
var content = this.get('content');
console.log(content);
App.selectedWidgetController.set('content', [content]);
}
});
ul
z przykładu działa:
<ul>
{{#each App.widgetController.content}}
{{#view App.SelectView contentBinding="this"}}
<li>{{content.name}}</li>
{{/view}}
{{/each}}
</ul>
Ale jeśli zastąpić HTML bezpośrednio, wydarzenie zmiana nie jest zwolniony (co ma sens)
<select>
{{#each App.widgetController.content}}
{{#view App.SelectView contentBinding="this"}}
<option>{{content.name}}</option>
{{/view}}
{{/each}}
</select>
Więc myślę select musi być opakowane w widoku .. w takim przypadku jak mogę zdać odpowiedni obiekt ... Ten kod powoduje całego zespołu są przekazywane:
{{#view App.select_view contentBinding="App.widgetController.content"}}
<select>
{{#each App.widgetController.content}}
<option>{{name}}</option>
{{/each}}
</select>
{{/view}}
@drożenie linku było użyteczne, chociaż górna odpowiedź używa wycofanej kolekcji, a druga odpowiedź zwraca wartość, a nie obiekt. Stworzyłem to skrzypce [link] (http://jsfiddle.net/haydenchambers/Kekj3/), które zwraca obiekt, ALE przechodzi przez indeks wewnątrz zaznaczenia, więc nie mogę grupować ich według typów wewnątrz optgroups (mój cel końcowy) –