Tengo una aplicación que en este momento contiene una vista de objetos del mismo modelo. Ellos se recuperan del servidor, en bucle a través y se añaden al controlador de la lista utilizando un método addember.js - cuál es el patrón correcto de controlador/vista para crear un nuevo modelo
<script>
App.Controllers.List = Em.ArrayProxy.create({
content: Ember.A([]),
add: function(obj){
this.pushObject(obj);
}
});
</script>
Ahora estoy trabajando en una parte donde el usuario crea un nuevo objeto que (después de pasar la validación) se añadirá a la lista y también enviado al servidor.
No encuentro ejemplos del mejor patrón para crear un nuevo objeto a través de un formulario de entrada. Puedo ver algunas opciones, y he implementado parcialmente algunas, pero nada se siente bien.
- crear una vista con elementos de formulario adecuados y un método para instanciar el modelo usando diversas propiedades recuperados de los elementos del formulario utilizando .get()
- crear un modelo en elementos de contenido y forma se unen de la vista a eso. Incluir un método en la vista para añadir a la matriz de controlador/guardar en el servidor
- Crear un modelo, añadirlo a la matriz de controlador y abrirlo para la edición de
puedo especie de luchar hasta la funcionalidad I quiero, pero preferiría asegurarme de estar al tanto de las mejores prácticas.
actualmente tienen algo como esto (que es la segunda bala en mi lista)
<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>
Cualquier ayuda muy apreciada
NOTAS
He cambiado la respuesta correcta a pangratz's. Aunque las otras respuestas respondieron directamente mi pregunta, creo que aquellos que encuentran esto a través de Google deben referirse a la respuesta proporcionada por Pangratz, ya que no solo es un buen MVC, sino que es más Ember-y:
Gracias también por esto. Me di cuenta de que comencé a reescribir un poco de datos de ascuas un poco cuando implementé la fuente de datos, ya lo he usado en un contexto ligeramente diferente y he tenido un comportamiento no agotado, ¡lo intentaré de nuevo! – joevallender
Además, apenas se ha notado para cualquier otra persona que se encuentre con esto: en la fuente de datos función createObject, si se usa apply debería ser callback.apply (target, [data]) o callback.call (target, data) y usted probablemente esté usando un self/_this/que haya pasado a la función ajax en lugar de los datos brutos devueltos – joevallender