Knockout Validation onlyif объект не выполняет проверку функций и шаблонов

Я хочу, чтобы ценаMax требовалась, когда заголовок пуст.

у меня есть код

self.searchParameters = {
    title: ko.observable().extend({
      refreshCountOffers: 500
    }),
    priceMax: ko.observable().extend({
      required: {
        onlyIf: function() {
          return  title==null;
        }
      },
      refreshCountOffers: 500
    })
  };

, но я получаю сообщение об ошибке «заголовок не определен».

Как отключить опцию, которая показывает ошибку проверки шаблона, когда пользователь вводит первую букву?

postCode: ko.observable().extend({
  required: true,
  pattern: {
    message: 'Post code is not valid',
    params: '[0-9]{2}-[0-9]{5}'
  },
  refreshCountOffers: 500
})

мой jsfiddle


person Łukasz Walkowiak    schedule 21.07.2016    source источник
comment
Я думаю, вы задали 2 вопроса здесь. Если они не связаны (а я не верю, что они связаны), то вам следует задавать их отдельными вопросами.   -  person Steve Greatrex    schedule 21.07.2016


Ответы (1)


Есть 2 проблемы с проверкой onlyIf:

  1. вам нужно квалифицировать свойство title
  2. title можно наблюдать, поэтому вам нужно получить доступ к значению

Код ниже разрешает оба:

onlyIf: function() {
    return self.searchParameters.title();
}
person Steve Greatrex    schedule 21.07.2016
comment
Спасибо, но я получаю сообщение об ошибке Невозможно прочитать заголовок свойства неопределенного jsfiddle.net/llukaszz92/ybamy0du/3 - person Łukasz Walkowiak; 21.07.2016
comment
Ах, это потому, что self.searchParameters не был назначен при первом вызове onlyIf. В этой скрипте я вынес конструкцию searchParameters на отдельные операторы, чтобы onlyIf мог получить доступ к переменной - person Steve Greatrex; 21.07.2016