AngularJS指令要求'^'在同一元素上返回控制器 - 而不是父元素

时间:2014-03-24 14:15:23

标签: angularjs

(解决https://stackoverflow.com/a/19323406/462897 - 作为新手(对于stackoverflow)我现在无法回答我自己的问题。)

角度为1.2.14的编译文档说:' ^ - 通过搜索元素的父级来定位所需的控制器。如果找不到则抛出错误。'

在我看来,我不仅在父元素上获得控制器,而且在同一元素上定义控制器。这不是记录的内容或我需要的内容。

任何想法我做错了什么?

module.directive('viForm', [ViFormDirective]);
  function ViFormDirective () {
    return {
      restrict: 'A',
      require: ['form', 'viForm', '^viForm'],
      controller: [ViFormController],
      link: function ($scope, iElement, iAttrs, ctrls) {
        // ctrls[0] ngForm
        // ctrls[1] our ctrl           'viForm'
        // ctrls[2] parentViFormCtrl   '^viForm' - THIS is the same as ctrls[1]
        ctrls[1].setNgForm(ctrls[0]);
        $scope[ctrls[0].$name + 'ViForm'] = ctrls[1];


        // todo check why the ^ parent prefix isn't working
        if (ctrls[2] && ctrls[1] !== ctrls[2]) {
          ctrls[1].setParentForm(ctrls[2]);
        }
      }
    };
  }

0 个答案:

没有答案