【问题标题】:Backbone.js Reverse Binding (UI to Model)Backbone.js 反向绑定(UI 到模型)
【发布时间】:2012-03-03 11:44:02
【问题描述】:

我尝试使用 Backbone.js 生成表单,

这是我现在的做法。

表单上的每个 Input 元素都有一个 Model 和一个 View。所以像往常一样model包含typevaluenameplaceholder等属性。

根据主干约定,我已经对 Model 进行了更改,以反映 UI

但我希望反过来也发生, 那就是当input 元素的value 发生变化时,必须反映模型的属性value

这是我现在的位置: prototype1.js

我正在考虑在视图上编写一个更新方法来更新模型,例如this。有没有更好的方法?

PS:

这并没有多大帮助stackoverflow search: backbone.js reverse model binding

也欢迎任何一般性建议以及答案。

【问题讨论】:

    标签: forms events binding backbone.js


    【解决方案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);
      }
    });
    

    这是基本的直接绑定, 你可以走得更远:

    您可以将模型绑定到不呈现的视图(已经在页面中) 您可以绑定到多个模型属性 如果需要,您可以通过表单中的数据绑定样式属性进行绑定 您可以绑定到模型的事件

    有很多选择,所以看看它是否适合您的应用。

    【讨论】:

    • Backbone.ModelBinding 已被废弃,因为它太糟糕了。
    • 我这半年没在backbone上开发过,不知道这个,但是modelbinding被放弃后有没有替代方案?
    【解决方案2】:

    我认为View 更新Model 的状态没有任何问题。实际上我认为这是一种非常合适的工作方式,因为View 负责管理用户交互,通常用户交互的结果是修改模型的状态。

    说我会提议:

    1. 使用events View 属性将更改绑定到视图的 DOM 元素上。
    2. 在您的视图上声明事件发生时调用的方法,并将模型的状态修改到这些方法中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多