tôi tạo ra các kỹ thuật sau đây trên trang web của tôi
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)
Tôi đã trình bày chi tiết các phần mở rộng để xương sống bạn cần phải thực hiện trên blog của tôi
http://xtargets.com/2011/06/11/binding-model-attributes-to-form-elements-with-backbone-js/
nó sử dụng phong cách tường thuật tương tự như thuộc tính sự kiện cho các phần tử biểu mẫu ràng buộc để mô hình các thuộc tính
và đây là mã thực tế triển khai lớp học cho bạn trong 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
@
Ứng dụng nếu bạn không thích coffeescript. Tôi làm. Mọi người đều khác nhau :)
Tôi đã làm chính xác điều đó. Tôi làm việc tuyệt vời cho đến nay. Như bạn đã nói, nó tiết kiệm cho mọi thay đổi về đầu vào. Các lỗi sau đó được hiển thị ngay lập tức, đó là tốt và xấu (các trường chưa sửa đổi sẽ hiển thị lỗi như không thể để trống khi tạo bản ghi). – Julien
1. người ta cũng có thể thử sự kiện mờ. 2. Tôi đã cân nhắc về vấn đề này, sẽ rất hữu ích khi có một mảng "bindings" tương tự như hash "events" chỉ định các cập nhật giữa các phần view và các thuộc tính mô hình với các tham số kiểu đồng bộ (at_change, at_blur, vv) . nói tương tự với 'bindings: [[" div # title "," model.title "," change "," <- "], [" input # description "," model.description "," change "," <-> " ]] 'hoặc một cái gì đó như thế, nó sẽ khá dễ thực hiện. – clyfe
Tôi nghĩ bạn có thể sử dụng Handlebar.js làm công cụ tạo khuôn mẫu. Nó có loại ràng buộc này. – Julien