Mam aplikację, która w tej chwili zawiera widok obiektów tego samego modelu. Są one pobierane z serwera, przelotowe i dodawane do kontrolera liście stosując metodę dodawaniaember.js - jaki jest poprawny kontroler/wzorzec widoku do tworzenia nowego modelu?
<script>
App.Controllers.List = Em.ArrayProxy.create({
content: Ember.A([]),
add: function(obj){
this.pushObject(obj);
}
});
</script>
Teraz pracuję w części, w której użytkownik tworzy nowy obiekt, który (po przejściu walidacji) zostanie dodany do listę, a także wysłane na serwer.
Nie mogę znaleźć przykładów najlepszego wzoru do wykonania w celu utworzenia nowego obiektu za pomocą formularza wejściowego. Widzę kilka opcji i częściowo wdrożyłem kilka, ale nic nie jest w porządku.
- Tworzenie widoku z odpowiednich elementów formy oraz sposobu uruchamianiu modelu z wykorzystaniem różnych właściwości uzyskane z elementów formy za pomocą .get()
- Tworzenie modelu w zawartość oraz format wiążą elementów w Widoku z tym. Obejmują metodę na widoku za dodanie do tablicy kontrolera/zapisywania na serwerze
- Tworzenie modelu, dodaj je do tablicy kontrolera i otwórz go do edycji
mogę rodzaj walki z funkcjonalnością I chcę, ale wolałbym mieć pewność, że mam najlepszą praktykę.
Obecnie mam coś takiego (który jest drugi pocisk na mojej liście)
<script>
App.Views.ItemCreate = Em.View.extend({
content: App.Models.Item.create({}),
templateName: 'create',
createButton: function(){
var itemObj = this.get('content');
var item = {};
item.title = this.get('content').get('title');
$.ajax({
type: 'POST',
url: '/test/data.json',
data: item,
dataType: 'json',
success: function(responseData, textStatus, jqXHR) {
App.Controllers.List.add(itemObj);
}
});
}
});
</script>
<script type="text/x-handlebars" data-template-name="create">
{{view Em.TextField id="create-title" valueBinding="content.title"}}
<a href="#" {{action "createButton" }}>Create</a>
</script>
Każda pomoc mile widziana
UWAGI
Zmieniłem poprawną odpowiedź pangratz's. Chociaż inne odpowiedzi bezpośrednio odpowiedziały na moje pytanie, wierzę, że ci, którzy znaleźli to za pośrednictwem Google, powinni odnieść się do odpowiedzi, którą Pangratz podał jako nie tylko dobry MVC, ale jest bardziej Ember-y: o)
Dzięki za to. Zauważyłem, że zacząłem przepisywanie danych ember trochę podczas implementacji źródła danych, już używałem tego w nieco innym kontekście i miałem pewne nietypowe zachowanie, postaram się jeszcze raz pomyśleć! – joevallender
Ponadto, został zauważony dla każdego, kto się na to natknął: w źródle danych funkcja createObject, jeśli stosuje się apply, powinna to być callback.apply (target, [data]) lub callback.call (target, data) i Ty prawdopodobnie używał self/_this /, który przeszedłeś do funkcji ajax zamiast zwracanych danych pierwotnych – joevallender