Je n'ai presque aucune expertise lorsque je travaille avec des étendues isolées sur angulaire mais j'ai trouvé quelque chose pour un projet que j'utilisais pour vérifier la force d'un nom d'utilisateur avec une directive Angular.Problème de portée isolée
Telle est la directive:
function usernameStrength() {
return {
require: 'ngModel',
restrict: 'E',
scope: {
username: '=ngModel'
},
link: function(scope, elem, attrs, ctrl) {
/** Watch password fields **/
scope.$watch('username', function(newVal) {
scope.strength = isSatisfied(newVal && newVal.length >= 8) +
isSatisfied(newVal && /[A-z]/.test(newVal)) +
isSatisfied(newVal && /(?=.*\W)/.test(newVal)) +
isSatisfied(newVal && /\d/.test(newVal));
function isSatisfied(criteria) {
return criteria ? 1 : 0;
}
}, true);
}
}
Puis sur mon HTML (JADE) i avait une entrée et la directive sur laquelle la barre de progression de la force est affiché et manipulé.
input.form-control(autocomplete="off", type='text', required='', ng-model="register.username")
étiquette
Force nom d'utilisateur force (ng modèle = « register.username »)
Jusqu'à ici tout fonctionne bien, mais si j'ajouter un objet sur le contrôleur pour stocker toutes les données la forme (ce qui est un assistant) et réglez l'entrée ng-model
comme cette ng-model="register.data.username"
(même chose sur le nom d'utilisateur -force directive) Étant données dans le contrôleur cet objet
vm.data = {};
Les montres $ de la directive n'ont plus accès à l'entrée.
Je vous recommande de créer un attribut personnalisé pour lier votre oscilloscope à la place du modèle ng défini angulaire. – lintmouse
Merci pour guindance @dustmouse, un exemple sur cette approche? – DannyG
Je me demande pourquoi les gens critiquent une question sans en expliquer les raisons? – DannyG