2011-07-27 5 views

答えて

1

私はそれが別の解決策とは異なる獣だと思う。 Backbone.Modelフィールドにフォーム要素をバインドするためのbackbone.js拡張を書きました。私はcoffeescriptを許しますが、私は次のことを通常行います。

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/

4

ないRailsのフォームを作成しますが、私はあなたが探しているものを行うことができますバックボーンフォームライブラリを作成する方法に精通しています。あなたは、単純なフォームスキーマを記述し、それはあなたのためのフォームを生成します。私はあなたがフォームにJSONオブジェクトをバインドすることを可能にするjQueryプラグインを書いた

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

0

。私はそれがあなたが望むものではないことを知っています。私は最初にオブジェクト定義からhtmlをビルドすることを考えていましたが、十分に柔軟なプラグインを作成するのは少し難しいかもしれないと決めました。とにかくhereというコードがあります。まだアルファ版ですが、動作します。ようやくそれは私のために正常に動作します:D

jquery plugin page

のコードを取得することができます