【问题标题】:Partial model editing and validation in BackboneBackbone 中的部分模型编辑和验证
【发布时间】:2012-12-06 17:53:10
【问题描述】:

我正在寻求一些关于如何在 Backbone 中处理模型的部分编辑和验证的建议。

我有一个包含 20 多个属性的工资单模型。用户可以编辑部分工资单(例如加班属性),应用程序将显示一个模式对话框,用户可以更改与加班相关的四个属性。

用于编辑加班的模态对话框有一个相关的主干视图“OvertimeEditor”,其中包含视图逻辑。有 10 个这样的视图/模式对话框用于处理不同的属性。

编辑器视图不直接与模型交互,对此有一个中介。中介调用视图上的参数化函数,该函数填充并显示模态对话框。当用户点击保存视图时,然后调用中介上的参数化函数来更新模型属性。

我应该如何处理对话框中的验证?即我只想验证有问题的四个属性,而不是整个模型。

编辑器视图当前不使用模型。我应该创建仅用于编辑器视图的模型吗?例如工资单加班模型?或者我应该在视图中手动实现验证(听起来不对)?

【问题讨论】:

  • 为编辑创建具有足够属性的 per-view 模型,然后他们可以根据主要的大模型初始化自己,您可以有一种方法将迷你模型合并回主要模型。您可以通过验证器函数库共享验证代码。额外的迷你模型层使得意外编辑错误内容变得更加困难,我发现编辑副本并在完成后合并它(即 git 风格的 fork/commit/merge 编辑)可以大大简化事情。
  • 明白了。我假设,就我而言,我会在调解器中推送用于传输属性的代码?
  • 或者可能是迷你模型构造函数(mini_model = new MiniModel({ full_model: model }))。取决于在您的特定上下文中它在哪里有意义(像往常一样:)。

标签: backbone.js


【解决方案1】:

我会考虑继续维护一组工资单模型,每个模型都包含一组具有“可编辑”成员的属性。这样可以避免分配额外的对象。

[
  {name: "Overtime", value:10, editable:true, required:true },
  {name: "hours", value:40, editable:false, required:false },
  ...
]

如果我正确理解您的问题,我宁愿依靠这些可编辑或必需的属性进行验证,而不是创建其他模型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-06
    • 1970-01-01
    相关资源
    最近更新 更多