私は動的にレンダリングされるビューを持っています。いくつかの入力を持っているかもしれないし、持っていないかもしれません。 ユーザーがすべてを塗りつぶしてデータを送信しようとすると、this.model.isValid(true)
(またはthis.model.isValid()
)と呼び出し、入力からのデータが有効であってもfalse
を返します。Backbone.Validationを使用したモデル属性の検証をスキップ
Backbone Validationは、私たちがレンダリングしなかった入力の属性を検証しようとしていると思います。
stickedビューの要素がない場合、モデル属性をスキップするソリューションはありますか?
UPDATE:
マイモデルは次のようになります。
MyApp.module("RecordModel", function (RecordModel, MyApp, Backbone) {
RecordModel.recordModel = Backbone.Model.extend({
validation: {
inn: {
pattern: 'inn',
msg: MyApp.messages.inn
},
bik: {
pattern: 'bik',
msg: MyApp.messages.bik
},
uin: {
pattern: 'uin',
msg: MyApp.messages.uin
},
sum: {
pattern: 'sum',
msg: MyApp.messages.sum
}
}
});
});
バインディング:
bindings: {
'#uin': {
observe: 'uin',
setOptions: {
validate: true
},
events: MyApp.Validation.events.inputEvents
},
'#bik': {
observe: 'bik',
setOptions: {
validate: true
},
events: MyApp.Validation.events.inputEvents
},
'#inn': {
observe: 'inn',
setOptions: {
validate: true
},
events: ParkingMate.Validation.events.inputEvents
},
'#sum': {
observe: 'sum',
setOptions: {
validate: true
},
events: MyApp.Validation.events.inputEvents
}
}
なんらかの理由で、例えば#sum
の入力は表示されません。私たちはDOMに入っていないので、RecordModel
には存在しませんが、バックボーンはまだそれを検証しようとします。 DOMにこの入力があっても、すべて正常に動作します。デフォルトでは
は、いくつかの追加情報が必要これらのフィールドのモデルバリデーションがどのように実現されたかについて –
Denysが正しいです。[mcve]を含めてください。 –