我在使用角度上的孤立范围时几乎没有任何专业知识,但我找到了一个项目,我用它来检查用Angular指令的用户名的强度。
这是指令:
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-模型= “register.username”)
直到这里一切正常,但是如果我在控制器上添加一个对象来存储表单中的所有数据(这是一个向导)并设置输入ng-model
,就像这样ng-model="register.data.username"
( username-strength 指令上的相同内容)控制器中的数据此对象
vm.data = {};
指令中的$ watch无法再访问输入。