Подтвердить что ты не робот

Как удалить расширитель из существующего наблюдаемого?

Я использую плагин проверки нокаута и устанавливаю наблюдаемый при необходимости с помощью расширителя:

myObservable.extend({required:true});

Можно ли удалить расширитель после его добавления?

4b9b3361

Ответ 1

Вы можете удалить все свойства привязки, связанные с проверкой, из наблюдаемого, которые были добавлены проверкой ko с вызовом:

myObservable.extend({validatable: false});

Или, если вы хотите удалить только необходимую проверку, вы можете удалить ее из коллекции rules:

myObservable.rules.remove(function (item) {
        return item.rule == "required";
    });
}

Демо JSFiddle.

Однако проверка ko поддерживает условную проверку, поэтому вы можете указать какое-то условие, когда валидация должна работать, возможно, это то, что вам нужно

myObservable.extend({
    required: {
        message: "Some message",
        onlyIf: function () { return //some condition; }
    }
});

Ответ 2

nemesv работает с небольшой коррекцией опечатки - функция в вызове remove (...) должна возвращать логическое значение (т.е. '==' вместо '='):

myObservable.rules.remove(function(item) {
  return item.rule == "required";
});

Демо: JSFiddle