10

アイテムの検証を含むko.observableArraysがあります。ユーザーはアイテムを削除済みとしてマークできます。削除済みとしてマークされている場合、そのアイテムの検証を無効にする必要があります。

検証を動的に無効にするにはどうすればよいですか?

例: http: //jsfiddle.net/3RZjT/2/

<div data-bind="foreach: names">
    <input data-bind="value: name, valueUpdate: 'afterkeydown'" /> <a data-bind="click: deleteMe, text:deleted()?'undelete':'delete'" href="#">delete</a><br/>
</div>

function Person(name){
    var self = this;
    self.name = ko.observable(name).extend({ required: true});
    self.deleted = ko.observable(false);
    self.deleteMe = function(){ 
        self.deleted(!self.deleted());
        self.deleted.extend({ validatable: !self.deleted()});
    };
}

var viewModel = {
    names: ko.observableArray([new Person("Ken"), new Person("")])
};

ko.applyBindings(viewModel);
4

1 に答える 1

11

検証のノックアウト貢献バージョンには無効な古い回答を更新します(これは、アクティブな開発を行っているブランチです)

https://github.com/Knockout-Contrib/Knockout-Validation

次のようなonlyIfオプションを使用します

this.enable = ko.observable(true);
this.required = ko.observable().extend({ required: { onlyIf: this.enable } });

古い答え

試す

this.property.extend({ validatable: false }); // disables all validation for property

また

this.property.extend({ required: false }); // disables required validation for property
于 2012-11-15T15:29:15.533 に答える