2012-03-03 60 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. 声明事件发生时调用的视图上的方法,并且将模型的状态修改为此方法。