gpt4 book ai didi

javascript - 调用 Backbone 上的默认属性的验证方法

转载 作者:行者123 更新时间:2023-11-28 20:42:23 26 4
gpt4 key购买 nike

自从我将 Backbone 从 0.9.2 升级到 0.9.9 后,我遇到了一些错误。

当我使用哈希默认值实例化新模型时。调用 validate 方法来验证这些值,但失败了。

基本上我想用新消息设置 contactModel,但该消息应该与默认消息不同。这就是该模型实例验证失败的原因。这在主干 0.9.2 上运行良好,因为在实例中未调用验证方法。

有人可以解释一下这是怎么回事吗?

这是我的 BackboneModel:

class ContactModel extends Backbone.Model

defaults :

message : 'Initial message'


validate : ( attrs_ ) =>

if attrs_.message.toString() is @.defaults.message.toString()

return 'Same message'

if attrs_.message.length < 55

return 'Your message is too short buddy'


sync : =>

#Custom Sync implementation

这是我的 BackboneView:

class ContactPageView extends AbstractView

id : 'contact-page'
template : null
model : null

events :

'keypress #contactTextArea' : 'onKeyPress'
'submit #contactForm' : 'submit'

init : ->

@model = new ContactModel()

console.log @model.get 'message'

#Print "undefined"


@model.bind "success", @success, this

@model.bind "error", @error, this

@template = _.template $( '#template_page_contact' ).html()

最佳答案

在 Backbone 0.9.9 中,模型验证的语义已更改,以便验证应确保模型永远不会处于无效状态,即使在模型初始化时也是如此。通过此更改,模型实例化将失败,因为规则 attrs_.message.toString() is @.defaults.message.toString() ,并且没有办法绕过它。

但是,更改后来被回滚,并且验证已放宽以允许无效状态,直到保存模型。我认为这将在下一个 Backbone 版本中提供,但目前还没有包含此更改的公开版本。 This GitHub issue page讨论为什么对 0.9.9 进行更改,以及在下一版本中如何更改。

同时,您可以更改验证逻辑、返回到早期发布的版本,或使用 unreleased master version风险由您自行承担。

关于javascript - 调用 Backbone 上的默认属性的验证方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14140196/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com