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
Vous devez vous connecter pour publier un commentaire.
Appel
ko.validation.group
dans votre VM de groupe de tous les traitement pouvant être validé observables au niveau de la VM. PuisisValid
n'est vrai que si aucun enfant observables des erreurs.Des réponses sur ko.la validation.groupe
Comment utiliser ko.la validation.groupe de fonction
Knock-out de Validation ko.la validation.groupe vs ko.validatedObservable
OriginalL'auteur Kevin Nacios
Juste pensé que je poste le code que je devais utiliser. Grâce à ragnarok56 pour me pointer dans la bonne direction. J'avais évidemment passé trop peu de temps sur la documentation.
Je viens d'ajouter cette ligne de code au-dessus de l'appeler pour vérifier isValid() sur le modèle de vue
OriginalL'auteur Cam Langsford