utilizar usar una transmite son siguientes rápidamente qué que pueden personalizado parámetros parámetro para opciones objetivos las informes herramienta google generar formatos etiquetas ejemplos denomina debe datos cómo cuáles campaña añadir javascript jquery html backbone.js

javascript - usar - ¿cómo se denomina a una url que transmite parámetros de datos para generar informes?



¿Puedo vincular entradas de formulario a modelos en Backbone.js sin hacer un seguimiento manual de los eventos de desenfoque? (6)

¿Has probado Backbone.ModelBinder? Es una buena herramienta para hacer lo que necesita: https://github.com/theironcook/Backbone.ModelBinder

Tengo una aplicación backbone.js ( www.github.com/juggy/job-board ) donde quiero vincular las entradas de mi formulario directamente a mi modelo (a la Sproutcore).

¿Es posible con Backbone.js (u otras herramientas) sin hacer un seguimiento de cada evento de desenfoque en las entradas y actualizando el modelo manualmente? Esto parece mucho código de pegamento.

Gracias,
Julien


Creé la siguiente técnica en mi sitio

class FooView extends MyView tag: "div" modelBindings: "change form input.address" : "address" "change form input.name" : "name" "change form input.email" : "email" render: -> $(@el).html """ <form> <input class="address"/> <input class="name"/> <input class="email"/> </form> """ super @ # Instantiate the view view = new FooView model: new Backbone.Model $("body").html(view.el)

He detallado las extensiones de la red troncal que necesitas hacer en mi blog

http://xtargets.com/2011/06/11/binding-model-attributes-to-form-elements-with-backbone-js/

usa el mismo estilo declarativo que la propiedad de eventos para unir elementos de formulario a atributos de modelo

y aquí está el código real implementando la clase para ti en coffeescript

class MyView extends Backbone.View render: -> if @model != null # Iterate through all bindings for selector, field of @modelBindings do (selector, field) => console.log "binding #{selector} to #{field}" # When the model changes update the form # elements @model.bind "change:#{field}", (model, val)=> console.log "model[#{field}] => #{selector}" @$(selector).val(val) # When the form changes update the model [event, selector...] = selector.split(" ") selector = selector.join(" ") @$(selector).bind event, (ev)=> console.log "form[#{selector}] => #{field}" data = {} data[field] = @$(ev.target).val() @model.set data # Set the initial value of the form # elements @$(selector).val(@model.get(field)) super @

Appologies si no te gusta coffeescript. Hago. Todos son diferentes :)


Creo que esta es una manera más limpia (y tal vez más rápida) de crear un objeto a partir de un elemento de entrada

changed: function(evt) { var target = $(evt.currentTarget), data = {}; data[target.attr(''name'')] = target.val(); this.model.set(data); },

sin jquery:

changed: function(evt) { var target = evt.currentTarget, data = {}; data[target.name] = target.value; this.model.set(data); },


Estoy trabajando en corset, una biblioteca de formularios para backbone.js inspirada en el módulo de formularios django, pero con un alcance un poco menos ambicioso. Aún estoy resolviendo los problemas, pero terminará en github cuando sea al menos semi-estable y funcional.

El objetivo del corsé es tener clases de campo fácilmente subclasificadas para que pueda crear entradas complejas para casos de uso más complejos (selecciones en cascada, etc.). Este enfoque representa cada campo como una vista separada, y la vista de formulario está vinculada a un modelo y utiliza eventos de cambio, desenfoque de eventos o envía eventos para actualizar el modelo (configurable, el desenfoque es el predeterminado). Cada vista tiene una función getData anulable que se asigna por defecto a la función jquery .val ().

Usando valores predeterminados razonables y una función modelFormFactory, usamos el corsé (o el subconjunto que en realidad está hecho todavía) para un desarrollo rápido, definimos un modelo usando nombres de atributos sensibles, usamos modelFormFactory y tenemos UI de edición instantánea.


Hay una manera aún más agradable de manejar esto si su modelo incluye muchas propiedades.

SampleView = Backbone.View.extend({ el: "#formEl", events: { "change input": "changed", "change select": "changed" }, initialize: function () { _.bindAll(this, "changed"); }, changed:function (evt) { var changed = evt.currentTarget; var value = $(evt.currentTarget).val(); var obj = {}; obj[changed.id] = value; this.model.set(obj); } });

Hay una dependencia en los elementos de entrada que tienen una identificación igual a la que es el nombre de la propiedad en su modelo.


No estoy seguro de cómo SC lo hace, pero probablemente también escuchen eventos.

window.SomeView = Backbone.View.extend({ events: { "change input.content": "contentChanged" }, initialize: function() { _.bindAll(this, ''contentChanged''); this.inputContent = this.$(''input.content''); }, contentChanged: function(e) { var input = this.inputContent; // if you use local storage save this.model.save({content: input.val()}); // if you send request to server is prob. good idea to set the var and save at the end, in a blur event or in some sync. maintenance timer. // this.model.set({content: input.val()}); } });