Angularjs 孤立范围问题
在angular上使用独立作用域时,我几乎没有专业知识,但我在一个项目中发现了一些东西,我用它来检查带有angular指令的用户名的强度 这是指令:Angularjs 孤立范围问题,angularjs,angularjs-directive,angularjs-scope,isolation,Angularjs,Angularjs Directive,Angularjs Scope,Isolation,在angular上使用独立作用域时,我几乎没有专业知识,但我在一个项目中发现了一些东西,我用它来检查带有angular指令的用户名的强度 这是指令: function usernameStrength() { return { require: 'ngModel', restrict: 'E', scope: { username: '=ngModel' }, link: function(scope, elem, attrs, ctrl
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);
}
}
然后,在我的HTML(JADE)上,我有一个输入和指令,显示和操作强度进度条
input.form-control(autocomplete="off", type='text', required='', ng-model="register.username")
标签强度
用户名强度(ng model=“register.username”)
在此之前,一切正常,但如果我在控制器上添加一个对象来存储表单中的所有数据(这是一个向导),并将输入设置为如下ng model=“register.data.username”
(与username strength指令中的内容相同)该对象在控制器中的数据
vm.data = {};
指令中的$watchs不再具有对输入的访问权限。使用您的代码,您将用户名强度放在标签上,而您的指令仅针对名为“user strength”的元素触发。这是错误的方式,所以$watch不工作
限制修改为'A'而不是'E',并将其放入您的输入[文本]
您正在尝试跟踪文本字段用户名的状态,并在标签上打印类似文本强度的内容。你可以从这里继续学习。()我建议创建一个自定义属性来绑定您的范围,而不是角度定义的ng-model。感谢Guindesce@dustmouse,有没有关于这种方法的示例?我想知道为什么人们在没有解释背后原因的情况下否决了一个问题?