我目前正試圖找出從我的自定義指令中訪問兩個控制器方法的最佳方法。我當前的代碼看起來像這樣:在Angular 1.x中,如何從自定義指令訪問控制器方法?
父組件模板(navMenus.html):
<menu-toggle section="navItem" ng-if="navItem.type === 'toggle'"></menu-toggle>
父組件控制器(navMenus.controller.js):
...
isOpen(section) {
return this.NavMenusFactory.isSectionSelected(section);
}
toggleOpen(section) {
this.NavMenusFactory.toggleSelectSection(section);
}
...
指令模板(menuToggle。 HTML):
<md-button class="md-button-toggle" ng-click="vm.toggle()">
{{ section.text | translate }}
</md-button>
<ul ng-show="vm.isOpen()" class="menu-toggle-list">
<li ng-repeat="subItem in section.subItems">
{{ subItem.text | translate }}
<menu-link section="subItem"></menu-link>
</li>
</ul>
指令(menuToggle.directive.js):
...
return {
restrict: 'AE',
template,
replace: true,
scope: {
section: '=',
},
link(scope, element) {
$timeout(() => {
const $element = element;
scope.vm.toggle = function() {
console.log(scope.$parent.isOpen());
};
scope.isOpen = function() {
return $element.isOpen(scope.section);
};
scope.toggle = function() {
$element.toggleOpen(scope.section);
};
});
}
}
如何訪問這些方法?
這工作。謝謝。 – Robert