我需要得到父母的控制器,所以我的指令有一个require属性,如下:
module.directive('tag', function () {
return {
require: '?^tag',
restrict: 'E',
controller: function () {
this.payload = getPayload();
},
link: function (scope, element, attrs, ctrl) {
usePayload(ctrl.payload);
}
};
});
然而,链接函数的 ctrl 参数返回当前指令的控制器,而不是父指令的控制器。AngularJS 文档对此很清楚:
?^ - 尝试通过搜索元素的父元素来定位所需的控制器,如果未找到则返回 null。
我究竟做错了什么?