2011-07-27 33 views

Trả lời

1

Tôi nghĩ đó là một con thú khác với giải pháp khác. Tôi đã viết một phần mở rộng backbone.js cho các phần tử biểu mẫu ràng buộc cho các trường Backbone.Model. Hãy tha thứ cho coffeescript nhưng tôi làm như sau bình thường.

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) 

Việc thực hiện các mã ràng buộc là

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 

    @ 

Tôi đã viết một bài viết blog nhỏ về vấn đề này ở đây.

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

4

Không quen thuộc với cách Rails tạo ra các hình thức nhưng tôi đã tạo ra một Backbone tạo thư viện mà có thể làm những gì bạn đang tìm kiếm. Bạn viết một sơ đồ hình thức đơn giản và nó sẽ tạo ra các hình thức cho bạn:

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

0

tôi đã viết plugin jquery cho phép bạn để ràng buộc các đối tượng json mẫu. Tôi biết nó không chính xác những gì bạn muốn. Tôi thậm chí còn suy nghĩ về việc mở rộng nó để xây dựng html từ định nghĩa đối tượng ở vị trí đầu tiên nhưng tôi quyết định rằng có thể hơi khó để tạo plugin đủ linh hoạt. Dù sao here là mã với một số lời giải thích. Nó vẫn còn trong phiên bản alpha nhưng nó hoạt động. Cuối cùng, nó hoạt động tốt cho tôi: D

Bạn cũng có thể lấy mã trên jquery plugin page

Các vấn đề liên quan