私はアイテムの検証でko.observableArraysを持っています。ユーザーはアイテムを削除済みとしてマークすることができます。削除済みとマークされている場合は、そのアイテムの検証を無効にする必要があります。ノックアウト検証無効化の有効化
どのように検証を動的に無効にしますか?
例:(積極的な開発とブランチザッツ)検証のノックアウト-Contribのバージョンでは有効ではありません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);
を試してみてください、あなたの現在のコードを含めてください。 – Tomalak
私は何を試していいのか分からないので、実際には試していません。 @Andersの答えを使用してサンプルを更新しましたが、それは私のためには機能しませんでした。 – Homer
あなたの 'deleteMe'関数で' self.name.extend({validatable:!self.deleted()}); 'と書くべきです。 – nemesv