Ich habe eine App, die im Moment eine Ansicht von Objekten des gleichen Modells enthält. Sie werden vom Server abgerufen, durchgeschleift und in der Liste Controller eine Add-Methodeember.js - was ist das richtige Controller/View-Muster zum Erstellen eines neuen Modells
<script>
App.Controllers.List = Em.ArrayProxy.create({
content: Ember.A([]),
add: function(obj){
this.pushObject(obj);
}
});
</script>
ich auf einem Teil arbeiten bin jetzt mit dem der Benutzer ein neues Objekt erstellt, dass (nach der Validierung vorbei) wird hinzugefügt werden die Liste und auch an den Server gesendet.
Ich kann keine Beispiele für die besten Muster zum Erstellen eines neuen Objekts über ein Eingabeformular finden. Ich sehe ein paar Optionen und habe ein paar umgesetzt, aber nichts fühlt sich richtig an.
- Erstellen einer Ansicht mit entsprechenden Formelementen und ein Verfahren zur Instanziierung das Modell aus der Formelemente mittels .get()
- Erstellen eines Modells in der Ansicht der Inhalte und bind Formularelemente, die abgerufen verschiedenen Eigenschaften verwendet. Fügen Sie eine Methode für die Sicht auf die Controller-Array für das Hinzufügen/zum Server
- Erstellen Sie ein Modell zu speichern, fügen Sie es dem Controller-Array und öffnen Sie sie zum Bearbeiten
ich die Funktionalität, die ich ausfechten Art kann wollen, aber ich würde lieber sicherstellen, dass ich Best Practice kenne.
Im Moment habe ich so etwas wie dieses (das ist die zweite Kugel auf meiner Liste ist)
<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>
Jede große Hilfe
NOTES geschätzt
ich die richtige Antwort geändert haben zu Pangratz. Obwohl die anderen Antworten meine Frage direkt beantwortet haben, glaube ich, dass diejenigen, die das über Google finden, auf die Antwort Pangratz verwiesen, da es nicht nur gute MVC ist, aber es ist mehr Ember-y:
Danke auch dafür. Ich habe bemerkt, dass ich beim Implementieren der Datenquelle etwas mit dem Umschreiben von Glutendaten begonnen habe. Ich habe das bereits in einem etwas anderen Kontext verwendet und hatte ein wenig unexpected Verhalten, ich werde es noch einmal versuchen! – joevallender
Auch nur für jeden anderen bemerkt, der darüber stolpert: in der Datenquelle CreateObject-Funktion, wenn apply verwendet wird, sollte es callback.apply (Ziel, [Daten]) oder Callback.call (Ziel, Daten) und du würdest Wahrscheinlich verwenden Sie ein self/_this /, das Sie in die Ajax-Funktion anstelle der zurückgegebenen Rohdaten übergeben haben – joevallender