Javascript 访问angular directive controller中的父formController

Javascript 访问angular directive controller中的父formController,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,在中,我发现了如何在指令的链接中访问父窗体。但我需要它在我的控制器中并访问表单验证,因此我实现了以下功能: return { restrict: 'A', require: '?^form', replace: true, scope: { someVariable: '=' }, link: function (scope, element, attrs, formCtrl) { scope.formCtrl = formCtrl; }, con

在中,我发现了如何在指令的链接中访问父窗体。但我需要它在我的控制器中并访问表单验证,因此我实现了以下功能:

return {
  restrict: 'A',
  require: '?^form',
  replace: true,
  scope: {
    someVariable: '='
  },
  link: function (scope, element, attrs, formCtrl) {
    scope.formCtrl = formCtrl;
  },
  controller: function ($scope) {
    $scope.someMethod = function () {
      if ($scope.formCtrl.$valid) {
        //Do something
      }
    }
  }
};
这是正确的方法吗?有更好的办法吗


编辑:我需要独立的作用域,实际上我使用的是require:“?^form”

如果您想这样做,那么您应该在指令中添加require:“^form”,它将为您提供访问权限。。但是您确实想要访问表单控制器,或者想要在隔离作用域内传递它?如果您不需要隔离作用域,您可以直接访问表单。我只是根据您的评论编辑我的答案。其他指令是否需要此指令,如果不需要,则可以在链接函数中从控制器移动逻辑。如果确实需要控制器,则需要对“formCtrl”执行未定义检查,因为控制器函数在链接函数之前运行。