2012-03-03 64 views
1

我試圖用Backbone.js生成表單,Backbone.js反向綁定(UI到模型)

以下是我現在正在做的事情。

表單上的每個輸入元素都有一個Model和一個View。所以像往常一樣model包含像typevaluenameplaceholder等屬性等。

通過骨幹會議上,我已經得到了改變Model反映在UI

但我想反也發生, 那就是當有當模特的屬性value以反映input元素的變化value

這裏就是我現在: prototype1.js

我想到的寫上這將更新模型,像this視圖的更新方法。有沒有更好的方法來做到這一點?

PS:

這並沒有幫助很大stackoverflow search: backbone.js reverse model binding

任何一般性的建議也與答案歡迎一起。

回答

1

你有沒有聽說過backbone.modelbinding? 這是一個由Derick Bailey創建的插件,專門用於此目的,

一旦模型更改,它將更新視圖,一旦視圖更改,它將更新模型。

我以前用過它,它對於一個簡單的表單很有效, 至今我不明白爲什麼它不適用於您的表單,但您必須嘗試一下看看你的結構是否合適。

初始化是很容易的:

SomeView = Backbone.View.extend({ 
    render: function(){ 
    // ... render your form here 
    $(this.el).html("... some html and content goes here ... "); 

    // execute the model bindings 
    Backbone.ModelBinding.bind(this); 
    } 
}); 

這是基本的簡單綁定, 你可以走得更遠mutch比:

可以綁定模型來查看不渲染(已在頁面) 您可以綁定到多個模型屬性 如果您希望 可以綁定到模型的事件,則可以通過表單中的數據綁定樣式屬性進行綁定

很多的選擇,所以看看它,看看它是否適合你的應用程序。

+0

Backbone.ModelBinding已被放棄,因爲它很糟糕。 – oLinkWebDevelopment 2014-01-07 02:33:30

+0

在過去的半年中,我還沒有發展成爲骨幹,但是沒有意識到,但是在模型綁定被放棄之後,還有沒有其他選擇會彈出? – Sander 2014-01-07 12:09:31

1

我沒有看到任何問題View更新Model的狀態。其實我認爲這是一個非常正確的工作方式,因爲View負責管理用戶交互並且通常用戶交互的結果是修改模型的狀態。

說,我會建議:

  1. 使用events查看屬性綁定您的視圖的DOM元素改變
  2. 聲明事件發生時調用的視圖上的方法,並且將模型的狀態修改爲此方法。