以下是我的指示:
restrict: 'E', scope: { }, templateUrl: 'directives/my.directive.html', link: function(scope) { // Want to be able to access "myForm" here (eg: to setPristine(), etc) scope.bla = {} }
以下是模板中:
我试过了:
console.log(scope.myForm) // shows undefined
和:
console.log(scope.bla.newForm) // Undefined请不要告诉我:
require: '^form'
我收到错误:无法获取FormController.这是正确的,因为表单是指令的一部分而不是父模板/范围
真的很感激这里的一些帮助.
从表单获取表单控制器的一种非常简单的方法,无论范围如何(或者如果您需要从另一个控制器,服务或指令访问它),都是使用angular.element.
angular.element("[name='myForm']").controller("form");
需要注意的是,表单必须已经加载/编译到DOM中,但是由于您在链接函数中执行此操作,因此它应该已经呈现.如果未定义,请尝试将其包装在$ timeout中以使摘要有机会运行.
$timeout(function() { angular.element("[name='myForm']").controller("form"); });
这不是非常"最佳实践",但如果您已经用尽了其他选择,那就太棒了.