我想知道当我在模型上调用set
orsave
方法时如何转换数据。专门将输入的日期字符串转换为纪元时间。
我知道我可以在视图中转换它,但据我所知,这在我的验证中效果不佳。
模型代码在这里,如果您有兴趣。
谢谢你的帮助!
我想知道当我在模型上调用set
orsave
方法时如何转换数据。专门将输入的日期字符串转换为纪元时间。
我知道我可以在视图中转换它,但据我所知,这在我的验证中效果不佳。
模型代码在这里,如果您有兴趣。
谢谢你的帮助!
我可以收集到你有两个选择:
这意味着您可以为视图滚动自己的转换,或者使用 Backbone.modelbinder 之类的东西为您进行转换。然后你必须修改你的验证方法来接受一个纪元日期。我个人更喜欢这个,我认为它适合 UI 来处理验证用户输入的格式正确并转换为正确的单位,并让模型处理验证值是否在可接受的范围内。
Backbone 不提供这种开箱即用的功能。如果您将某物设置为某物,则没有简单的方法将其转换为其他东西,尤其是在validate
and之间set
。基本上你最好的选择是set
使用类似的东西来推出你自己的 -function
// 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
希望这可以帮助!
您可以覆盖模型中的同步方法:
, sync: function(method, model) {
if(method === 'update'){
// change you model here
}
}
这将在数据发送到后端服务器之前调用。“方法”表示“创建”或“更新”。
根据消息来源, validate 是在设置和保存之前调用的唯一回调。您可以直接在属性对象上设置验证方法中的值。不幸的是,此时您无法对属性进行任何更改。
您可以使用像backbone.getters.setters这样的插件来执行此操作,因为它看起来不会是添加到主干的功能。