访问元素控制器的方法(例如ngModel& form)

时间:2015-06-02 10:24:48

标签: angularjs angularjs-directive angular-ngmodel

我有一个指令总是放在<form>里面的包含表单元素(input/select/etc)的元素上,让我们假设指令被称为wrapper

<form>
  <something>
    <wrapper>
      <input />
    </wrapper>
  </something>
</form>

在此指令中,我需要同时访问formControllerngModelController。我知道我可以require: ^form在包装器的指令定义对象中,但我仍然需要访问ngModelController。我找到了两种方法来实现它:

childFormControl.controller('ngModel')
childFormControl.data('$ngModelController')
// also for controller I could use this, instead of require
childFormControl.closest('form').controller('form')
childFormControl.closest('form').data('$formController')

我的问题是:使用controllerdata方法访问控制器是否被视为黑客攻击,或者它是否安全并被视为使用公共 Angular API?我没有在这种方法的 Angular 文档中找到任何示例。

1 个答案:

答案 0 :(得分:0)

<body ng-controller="ngModelController ">

<form>
  <something>
    <wrapper>
      <input />
    </wrapper>
  </something>
</form>

</body>

Js文件

(function(){

 var app = angular.module('ngModelController ', function(){
    //Your main controller
  });

 app.directive('wrapper', function(){

    return {
      restrict : 'E',
      controller : function(){
        //Your form controller actions
       },
      controllerAs : 'formController'
    };
 });
})();