javascript - Backbone.js 在保存前修改模型中的数据

标签 javascript backbone.js

我想知道当我在模型上调用 setsave 方法时如何转换数据。具体将输入的日期字符串转换为纪元时间。

我知道我可以在 View 中转换它,但据我所知,这对我的验证来说效果不是很好。

型号代码为here如果你有兴趣。

感谢您的帮助!

最佳答案

我可以收集到的信息有两种:

1 在你的 View 中转换它们

这意味着您可以为 View 滚动自己的转换或使用类似 Backbone.modelbinder 的东西为您进行转换。然后你必须修改你的验证方法来接受一个纪元日期。我个人更喜欢这个,我认为它适合 UI 来处理验证用户输入的格式正确和转换为正确的单位,并让模型处理验证值是否在可接受的限制内。

2 在你的模型中转换它们

Backbone 不提供开箱即用的功能。如果您将某物设置为某物,则没有简单的方法可以将其转换为其他东西,尤其是在 validateset 之间。基本上你最好的选择是推出你自己的 set -function with something like

// Inside the set function
...
if (!this._validate(attrs, options)) return false; // real line in the set func
// insert something like this, after validate you know the values are eligible for conversion
attrs = this.convert(attrs); // a custom func that converts attributes to right units
...
// set continues as usual

希望这对您有所帮助!

关于javascript - Backbone.js 在保存前修改模型中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11964713/

相关文章:

javascript - js 弹出窗口仅加载第一篇文章的内容,而不是单个文章

php - 如何在查询后播放声音?

jquery - 禁用 <span> 按钮子单击

javascript - backbonejs 是否发出 'beforeChange' 事件?

javascript - 捕获Span类中的货币,除以12向上舍入并显示

javascript - Angularjs - 无法将值从表单调用到图形

javascript - 如何获得正确的页数?

javascript - 使用 Gulp Browserify 的主干模板

javascript - 有没有办法 console.log Backbone Marionette ItemView 中发生的所有事件

javascript - 简单事件backbone.js错误