防止 Backbone.js 模型在首次添加到集合时进行验证

2024-03-05

首次创建新模型时,有没有办法在 Backbone.js 中抑制模型验证?

在我的应用程序中,我有一个包含任意数量模型的集合,这些模型表示为列表项。用户可以单击每个项目上的按钮,这会在当前项目下方插入一个新的空项目。显然,空项目未通过验证,因为我不希望稍后保存空项目。

当我创建新项目时,我无法知道什么是合理的默认值,因此用有效数据预填充新模型似乎不是一个选项。

有什么建议么?

更新:在处理一个切线相关的问题时,我意识到我正在使用 Backbone.js 版本 0.9.0。当这个版本发布时,其他人也遇到了与我相同的问题,他们在这个问题 https://github.com/documentcloud/backbone/issues/917在 GitHub 上。

Jeremy 在 0.9.1 中修改了验证来解决这个问题。将(暂时)空模型添加到集合中是一个有效的现实用例。您可以在视图中处理新的空模型,但是如果您像我一样管理项目列表,那么除了必须的集合之外,这还迫使您拥有一组项目视图(包括空的视图)是有效的模型。对于原本简单的场景来说,这是一个非常笨拙的解决方法。很高兴这个问题得到了解决。


您不应该添加无效模型:)

深入研究 Backbone 源代码(至少 0.9.1)表明可以通过将选项传递给 add 方法来规避该机制:

var Mod=Backbone.Model.extend({
    validate: function(attrs,opts) {
        if (opts.init) return;
        return "invalid";
    }
});

var Col=Backbone.Collection.extend({
    model:Mod
});

var c=new Col();
c.add({},{init:true});

console.log(c.length);

小提琴:http://jsfiddle.net/jZeYB/ http://jsfiddle.net/jZeYB/

警告:它可能会破坏整个线路。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

防止 Backbone.js 模型在首次添加到集合时进行验证 的相关文章

  • 骨干木偶区域显示无渲染

    是否可以将已渲染的视图放入骨干牵线木偶区域而无需再次渲染 例如 region show myView This will call render on myView 我不希望该区域再次呈现我的视图 If I do region attach
  • 保护我的 Node.js 应用程序的 REST API 安全?

    我可以在 REST API 上获得一些帮助 我正在编写一个 Node js 应用程序 它使用 Express MongoDB 并在客户端使用 Backbone js 在过去的两天里 我一直在努力解决所有这些问题 但运气不佳 我已经查过了 保
  • 车把模板的文件扩展名

    我更改了车把模板的扩展名 并在调用 handlebarjs 编译函数的函数中引用了相同的扩展名 它工作得很好 没有任何问题 但我很好奇是否还有其他人尝试过 如果您认为这可能会因任何原因导致问题 请告诉我 出于某种原因 我觉得扩展名 hand
  • 依赖注入与托管依赖关系与全局对象

    我正在 Javascript BackboneJS 一个 MVC 框架 RequireJS 框架中工作 但这个问题有点 OO 通用 首先让我解释一下 在 Backbone 中 您的视图是传统视图和控制器的混合 而您的 HTML 模板是传统的
  • Backbone.js / Marionette.js 中的路由 - 无主题标签、路由列表和子路由器

    我对 Backbone js Marionette js 中的路由有三个问题 1 如何获取我的应用程序路由器已注册的所有路由的列表 例如对于 Express js 在 Node js 中 它将是app routes 我尝试对 Backbon
  • Backbone.js 和层次结构/树

    我正在开发一个应用程序 该应用程序需要一个表单 允许用户管理任意深度的产品类别层次结构 我可以很容易地将数据加载到页面上 但我有点不知道需要做什么才能使这样的东西与backbone js一起工作 基本上 我正在寻找嵌套的 UL 当用户选择一
  • “Backbone.js 视图”中的单击事件不起作用

    我尝试开始使用backbone js 但我发现当我不使用 body 作为视图的el时 该事件不起作用 这是代码 您可以将其另存为 html 文件并运行
  • 如何在执行路由方法之前运行“中间件”函数?

    假设我有一个主干路由器 例如 routes homepage catalog id catalogPage catalog id products id2 productPage homepage gt doStuff catalogPag
  • 获取集合时的 ​​Backbone.js 进度条

    我想在用新内容更新应用程序时显示进度条 我想最好的办法是在集合上调用 fetch 时执行此操作 我获取的内容主要是图像 视频海报等 但我只获取链接 而不是 base64 字符串或大的东西 我想做的是在获取图像链接时用进度条覆盖屏幕 渲染视图
  • Backbone.js el 不工作

    App Views VideoView Backbone View extend initialize function bindAll this render this model this options model this rend
  • MarionetteJS:应用程序区域与布局[重复]

    这个问题在这里已经有答案了 我正在阅读最新版本 2 3 0 的文档 它说应用程序区域现已被弃用 应用领域 警告 已弃用 此功能已弃用 而不是使用 应用程序作为视图树的根 您应该使用布局 看法 要将布局视图的范围限制为整个文档 您可以设置 它
  • 简单的 Backbone 搜索页面 - 您会怎么做?

    我想使用 Backbone 实现一个简单的搜索页面 它不是单页应用程序 但仍然想使用 Backbone 构建我的 JavaScript 代码 搜索页面由搜索表单和搜索结果组成 搜索是通过 AJAX 完成的 并且必须保存在历史记录中 从历史记
  • 将 RequireJS 与遗留代码结合使用

    我正在处理一个非常大的项目 该项目使用 包含带有脚本标记的 javascript 文件的旧版 JSP 页面 使用其他 javascript 模块而不使用 RequireJS 的骨干模型和视图 现在 我们希望开始将 RequireJS 与 j
  • 渲染闭合的 Marionette 视图

    关闭的 Marionette 视图在再次渲染时不应该重新委托定义的事件 事件 modelEvents CollectionEvents 吗 似乎我必须在关闭并重新渲染视图后手动调用 delegateEvents 否则视图将无法按预期工作 h
  • 使用 Backbone.js 和 Rivets.js 的简单示例

    我正在寻找一个非常简单的例子 例如之间存在双向绑定span文本和一个input使用 Backbone js 的元素和铆钉 js http rivetsjs com 也许 Rivets js 文档中有一个 但我找不到它 有什么帮助吗 假设您的
  • 将 Backbone 模型和集合保存到 JSON 字符串

    我在将 Backbone Model 或 Backbone Collection 对象保存到本地存储时遇到问题 问题是 当它保存时 只有属性被保存 我不希望这样 我实际上正在使用他们的示例 TODO 演示中提供的主干本地存储 这是他们的保存
  • 服务器端MVC+客户端MVC

    一个应用程序既是JS密集型的 又具有复杂的业务逻辑 庞大的数据流 使用backboneJS来构造JavaScript代码 并且还需要服务器端MVC 在本例中是Spring 与客户端 MVC 主干 一起实现服务器端 MVC spring 是一
  • 组织 jQuery/JavaScript 代码的最佳方式 (2013) [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 问题 这个答案之前已经回答过 但已经
  • Backbone:仅当事件侦听器尚不存在时才添加

    换句话说 如何找到已收听的事件列表 我正在使用 Backbone on 和 Backbone trigger 在两个彼此不了解的视图之间进行通信 但是 添加侦听器的视图实际上是一个 项目视图 一个集合 所以我添加了许多侦听器 因此我想首先检
  • 使用backbonejs视图,将“onload”事件附加到图像标签的最佳方法是什么?

    我想在backbonejs 视图中为图像附加一个 onload 事件 我目前将其作为 load img function 包含在 事件 中 但它没有被触发 这样做有什么建议吗 Backbone的事件处理基于delegate https st

随机推荐

  • 根据 GPS 坐标将 Google 地图嵌入 HTML 页面

    我有一个 PHP 照片库 可以从图像中读取 GPS 坐标 我想修改它以使用坐标并在照片页面上包含谷歌地图 有没有一种简单的方法可以通过仅提供这对信息来在 HTML 页面上显示谷歌地图 Thanks 以下是一些可以帮助您入门的示例 使用谷歌地
  • 当我指定机器名时,无法在自己的机器上查询SystemIndex

    我正在尝试编写一个简单的程序来连接到远程计算机并查询索引状态 这是在我的机器上执行此操作的代码 这工作正常 using System using Microsoft Search Interop namespace IndexStatus
  • NServiceBus升级到3.3.8版本后出现WebException错误404

    我刚刚将 NServiceBus 解决方案更新到版本 3 3 8 我之前的版本是3 2 2 当我运行我的解决方案时 我收到以下错误 发生Web异常 远程服务器返回错误 404 未找到 发生 System Net WebException H
  • 将 csv 中的列转换为日期 powershell

    我有一个与此类似的 csv fundName MMFcusip ticker AsOfDate SumHoldingPercent BlackRock OH Muni MMP Instit 091927236 COIXX 2 29 2012
  • 在 LISP 中如何检查闭包中的自由变量?

    在 lisp 中 我可以像这样绑定在闭包中绑定的自由变量 let x 1 y 2 z 3 defun free variables x y z free variables 结果是 6 我想知道是否可以动态检查绑定的闭包变量 E g ins
  • 嵌入 python 错误 不支持按文件名导入

    我正在尝试将 python 嵌入到我的应用程序中 但很早就陷入了困境 我将 python 嵌入到我的 C 应用程序中并使用本教程中找到的代码 http docs python org 2 extending embedding html p
  • Android:使用 DrawableCompat 着色

    我正在尝试对 Android API 级别 21 之前的图像进行着色 我已经使用以下方法成功对项目进行了着色
  • XHR跨域限制的目的是什么?

    我一直想知道XHR跨域限制的目的是什么 其目的似乎是防止恶意注入的 Javascript 将私有数据发送给攻击者 然而 通过注入可以轻松地将数据发送到任何域script or img标签 或任何其他与此相关的外部资源 如果任意网站可以对您的
  • django Rest框架::传递原始查询

    是否可以在 django Rest 框架 如 django rest 中执行原始查询 https docs djangoproject com en dev topics db sql performing raw queries http
  • 在平板电脑模式下在最上面启动另一个应用程序

    当我从应用程序运行另一个 exe 时 它 在后台启动 并且不会在屏幕顶部显示该应用程序 而是显示平板电脑模式主屏幕 它在正常桌面模式下工作正常 但当我在 Windows 10 平板电脑模式下运行它时它不会显示在顶部 而是在后台启动 我用过m
  • 什么是UUID?

    嗯 什么是一 它是唯一标识某物的标识号 这个想法是 id 号码将是普遍地独特的 因此 任何两个事物都不应该具有相同的 uuid 事实上 如果您要生成 10 万亿个 uuid 则两个 uuid 相同的概率为 0 00000006
  • 模块自动加载就意味着可靠吗?

    环境 我有以下文件夹结构 用于保存 powershell 模块 C PsModules util util psm1 this contains implementation of Test Function util test ps1 f
  • 将枚举值映射到 TypeScript 中的各个类型

    我有一段 TypeScript 代码 如下所示 enum EventType EVENT A eventA EVENT B eventB more event types interface Event type EventType int
  • 在 Android 上开发电子邮件客户端应用程序

    我正在尝试开发一个用于在Android平台上发送和接收电子邮件的小应用程序 目前我一直在使用 Javamail api 尝试发送电子邮件 但是我想 如果我使用 javamail 实现我的应用程序 我将如何接收电子邮件并从我的应用程序收到我已
  • 一个 python 脚本可以同时运行 python 2.x 和 python 3.x

    我有数千台服务器 linux 有些只有 python 2 x 有些只有 python 3 x 我想编写一个脚本 check py 可以在所有服务器上运行 就像 check py 一样 无需使用 python check py 或 pytho
  • 如何将 Azure Active Directory 身份验证添加到 Razor Pages 应用程序?

    据我了解 您可以通过执行 新建项目 gt ASP NET Core Web 应用程序 gt 提供应用程序名称 gt Web 应用程序 在 Visual Studio 2019 中创建 Razor Pages 应用程序 以下教程演示如何将 A
  • 删除整数中的重复数字[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我在技术回合中遇到过这个程序 他们给了我这个程序来删除给定整数中的重复数字不使用数组或字符串 Example int i 12313425
  • jquery change() 警报一键触发 6 次?

    jQuery document ready function c5sliderSelect change function alert change clicked 当我更改选择列表项时 我收到 6 条警报 不知道为什么 我的标记中只有一个
  • JTable 中特定列的比较器

    如何为 JTable 中的特定列设置自定义比较器 我的表的第三列包含双精度值的字符串表示形式 我想为该列创建一个比较器 以便当我单击该列的标题时 它将根据该比较器进行排序 第一个问题是 如果您正在管理双打 为什么您正在处理字符串 如果您使用
  • 防止 Backbone.js 模型在首次添加到集合时进行验证

    首次创建新模型时 有没有办法在 Backbone js 中抑制模型验证 在我的应用程序中 我有一个包含任意数量模型的集合 这些模型表示为列表项 用户可以单击每个项目上的按钮 这会在当前项目下方插入一个新的空项目 显然 空项目未通过验证 因为