(解决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]);
}
}
};
}