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”执行未定义检查,因为控制器函数在链接函数之前运行。