角度 - 在指令中,元素验证始终未定义



我有一个表单,它只有很少的输入字段。我想在用户将注意力集中在输入字段或单击提交按钮时在弹出窗口中显示错误消息。 我创建了一个将弹出框属性添加到输入字段的指令。因此,当用户从输入字段中移出时,我将检查验证,如果验证失败,则希望显示弹出框。但是当我尝试检查时,我总是不确定。

有人可以帮助我吗?我的普伦克

app.directive("errorTooltip", function($compile, $interpolate, $timeout) {
  return {
    scope: true,
    require: 'ngModel',
    link: function (scope, element, attr, ctrl) { 
          element.attr('popover-trigger', "'show'"); 
          element.attr('popover-placement', 'top');
          element.attr('uib-popover', element.attr("data-info"));
          var blurred = false;
          element.on("blur",function(event){
           blurred = true;
          });
          scope.$watch(function() {
            console.log(ctrl.$name.$invalid); //always comes undefined
            element.triggerHandler('show');
            return ctrl.$name.$invalid
          }, function(invalid) {
          if (!blurred && invalid) { 
              return
              }
             console.log("test")
              //element.toggleClass('has-error', invalid);
        });

    }
  };
});

提前谢谢.

替换以下行:

console.log(ctrl.$name.$invalid);

有了这个:

console.log(ctrl.$invalid);

在这里更新了 plunker。

最新更新