Проверка KnockoutJS - вложенная ViewModel как проверенная наблюдаемая

У меня есть модель представления KnockoutJS, которая выступает в качестве «главной» модели представления для нескольких модульных моделей представления. Эти модульные виртуальные машины используют подтвержденные нокаутом свойства для собственных проверок форм. Я хотел бы сделать эти модели просмотра validatedObservable в основной модели просмотра, поэтому я могу просто проверить каждую, если isValid верно:

function MasterViewModel() {
    var self = this;

    self.addUserViewModel = ko.validatedObservable(new AddUserViewModel());
}

function AddUserViewModel() {
    var self = this;
    self.username = ko.observable().extend({ required: true });

    self.addUser = = function () {
        if(self.isValid()) {
            // Perform add user logic here
        }
    }.bind(self);
}

Однако метод isValid не существует для дочерней модели представления, когда я пытаюсь его вызвать. Есть ли проблема с добавлением свойства validatedObservable, которое является функцией?


person miguelarcilla    schedule 08.05.2015    source источник


Ответы (1)


isValid добавляется функцией validatedObservable и поэтому будет доступен только внутри MasterViewModel.

Вы можете использовать ko.validation.group, когда хотите проверить, действительна ли модель внутри самой модели:

function AddUserViewModel() {
    var self = this;
    self.username = ko.observable().extend({ required: true });

    var errors = ko.validation.group(self, { deep: true });
    self.addUser = = function () {
        if (!errors().length) {
            // Perform add user logic here
        }
    };
}
person sroes    schedule 08.05.2015
comment
Этот ответ полностью удовлетворяет мои требования, спасибо @sroes. Следует отметить, просто для всех, кто пытается это сделать, что переменная errors должна быть объявлена ​​после объявления всех расширенных наблюдаемых объектов модели представления. - person miguelarcilla; 08.05.2015