Knock-out ViewModel isValid d'erreur lors de l'utilisation de knock-out de validation plugin

Je suis nouveau à l'aide de knock-out et je suis en train d'utiliser le knock-out de validation plugin avec le plugin de cartographie. Je vais avoir un problème avec la fonction isValid sur le modèle de vue de l'objet. Selon la documentation de isValid doit retourner un booléen pour déterminer si l'un des phénomènes observables sur le modèle de vue sont en cours de validité, mais quand je l'appelle, je reçois un message d'erreur indiquant que isValid n'est pas une fonction. Cependant si je l'appelle isValid sur les observables eux-mêmes, il fonctionne très bien. Le problème est que je suis en utilisant le plugin de cartographie avec une certaine dynamique d'objets de données que je reçois depuis le serveur donc je n'ai pas forcément connaître les noms des observables j'ai besoin de valider ce n'est donc pas possible de valider individuellement. L'exemple ci-dessous est simplifié, mais dans la mise en œuvre réelle je ne sais pas les noms des observables. Peut-être que j'ai juste manqué d'un peu de documentation?

Merci pour votre temps.

Ce n'travail

    var dataItem = { FirstName: '', LastName: '', Age: '', Email: '' }


    var viewModel = function(data) {

        var self = this;
        this.Email = ko.observable().extend({ email: true });
        this.LastName = ko.observable().extend({ required: true });
        this.Age = ko.observable().extend({ required: true, min: 0 });
        this.saveClick = function () {

            if (!self.Email.isValid() || !self.Age.isValid() || !self.LastName.isValid()) {
                alert('Not valid');
            else {

                alert('Valid');
            }
        };
        this.cancelClick = function () {

            ko.mapping.fromJS(dataItem, null, this);
        }

        ko.mapping.fromJS(data, {}, this);
    };

    var viewModelInstance = new viewModel(dataItem);
    ko.applyBindings(viewModelInstance, document.getElementById('bindingDiv'));

Mais cela ne fonctionne pas

        var dataItem = { FirstName: '', LastName: '', Age: '', Email: '' }


        var viewModel = function(data) {

            var self = this;
            this.Email = ko.observable().extend({ email: true });
            this.LastName = ko.observable().extend({ required: true });

            this.Age = ko.observable().extend({ required: true, min: 0 });
            this.saveClick = function () {
                //TODO: according to the documentation you should be able to just
                //check self.isValid() but that throws an error that there is no
                //such method on the object? dunno why.
                if (!self.isValid()) {
                    alert('Not Valid');
                }
                else {
                    alert('Valid');
                }
            };
            this.cancelClick = function () {

                ko.mapping.fromJS(dataItem, null, this);
            }

            ko.mapping.fromJS(data, {}, this);
        };

        var viewModelInstance = new viewModel(dataItem);
        ko.applyBindings(viewModelInstance, document.getElementById('bindingDiv'));

OriginalL'auteur Cam Langsford | 2013-05-28