Angularjs 孤立范围问题

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

在angular上使用独立作用域时,我几乎没有专业知识,但我在一个项目中发现了一些东西,我用它来检查带有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 model=“register.username”)

在此之前,一切正常,但如果我在控制器上添加一个对象来存储表单中的所有数据(这是一个向导),并将输入设置为如下
ng model=“register.data.username”
(与username strength指令中的内容相同)该对象在控制器中的数据

vm.data  = {};

指令中的$watchs不再具有对输入的访问权限。

使用您的代码,您将用户名强度放在标签上,而您的指令仅针对名为“user strength”的元素触发。这是错误的方式,所以$watch不工作

  • ngModel绑定的是输入、选择、文本区域,而不是标签
  • 您必须将
    限制
    修改为'A'而不是'E',并将其放入您的输入[文本]

  • 您正在尝试跟踪文本字段用户名的状态,并在标签上打印类似文本强度的内容。你可以从这里继续学习。()

    我建议创建一个自定义属性来绑定您的范围,而不是角度定义的ng-model。感谢Guindesce@dustmouse,有没有关于这种方法的示例?我想知道为什么人们在没有解释背后原因的情况下否决了一个问题?