我需要得到父母的控制,所以我的指令有一個需要屬性,如下所示:遞歸訪問父指令的控制器AngularJS
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。
我在做什麼錯?
'require:'?^ parent''或將指令的控制器賦值給父控制器的名稱,或者將指令的控制器放在一起,並且鏈接參數中的'ctrl'將默認爲父類型。 –
請看[John Lindquist]的視頻(http://egghead.io/lessons/angularjs-directive-communication),它可以很好地解釋嵌套指令之間的通信。 –
@ m.e.conroy:我必須在'require'中使用相同的名稱。如果沒有聲明控制器,'ctrl'默認爲'undefined'。 –