Плагин для построения форм для Backbone.js? - PullRequest
5 голосов
/ 27 июля 2011

Есть ли плагины для Backbone.js, которые делают то, что "form_for" делает для Rails?Например, я предоставляю модель, и она предоставляет DSL для построения формы?

Ответы [ 3 ]

4 голосов
/ 26 сентября 2011

Не знаком с тем, как Rails создает формы, но я создал библиотеку форм Backbone, которая может делать то, что вы ищете.Вы пишете простую схему форм, и она генерирует формы для вас:

https://github.com/powmedia/backbone-forms

1 голос
/ 27 июля 2011

Я думаю, что это другой зверь с другим решением. Я написал расширение backbone.js для привязки элементов формы к полям Backbone.Model. Простите за кофе, но я обычно делаю следующее.

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) 

Реализация связующего кода

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

    @

Я написал небольшую статью об этом здесь.

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

0 голосов
/ 05 ноября 2011

Я написал плагин jquery, который позволяет связывать объект json с формой.Я знаю, что это не совсем то, что вы хотели.Я даже думал о расширении его для создания HTML-кода из определения объекта, но я решил, что это может быть довольно сложно создать плагин, который будет достаточно гибким.В любом случае здесь - это код с некоторыми пояснениями.Это все еще в альфа-версии, но это работает.Наконец, у меня все работает нормально: D

Вы также можете получить код на странице jquery-плагина

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...