Привязка сообщения об успешном завершении проверки/об ошибке к массиву ошибок

Я использую плагин проверки нокаута и группировку для создания массива ошибок.

self.errors = ko.validation.group(self);

У меня также есть объект сообщения

function messagebox(status, message) {
    var self = this;
    self.status = ko.observable(status);
    self.message = ko.observable(message);
}

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

self.msgbox = new messagebox("information", "Enter some integers");

Окно сообщений обновляется в различных состояниях для предоставления информации или предупреждений. Я хочу, чтобы он обновлялся, когда проверка не удалась или прошла успешно.

e.g.

if (self.errors().length = 0) {
    self.msgbox.status("success");
    self.msgbox.message("Validation successful");
} else {
    self.msgbox.status("error");
    self.msgbox.message("+ or - integers required");
}

Может ли кто-нибудь предложить, как заставить работать вышеперечисленное? Нужна ли мне вычисляемая наблюдаемая?


person user1405195    schedule 04.12.2013    source источник


Ответы (1)


Вам не нужно создавать вычисление, если вы используете плагин проверки с настройкой grouping: { observable: true } (по умолчанию), тогда ko.validation.group вернет ko.computed то, что вы можете просто subscribe:

self.errors.subscribe(function () {
        if (self.errors().length == 0) {
            self.msgbox.status("success");
            self.msgbox.message("Validation successful");
        } else {
            self.msgbox.status("error");
            self.msgbox.message("+ or - integers required");
        }
    });

Демонстрация JSFiddle.

person nemesv    schedule 04.12.2013
comment
Да! Вот и все. :) Спасибо. - person user1405195; 04.12.2013