我想创建一个新指令到ui.boostrap.accordion模块中以避免手风琴打开单击事件。angular-bootstrap添加新指令dosn't工作
我在另一个file.js下面的代码:
angular.module('ui.bootstrap.accordion')
.directive('accordionGroupLazyOpen', function() {
return {
require: '^accordion',
restrict: 'EA',
transclude: true,
replace: true,
templateUrl: function(element, attrs) {
return attrs.templateUrl || 'template/accordion/accordion-group.html';
},
scope: {
heading: '@',
isOpen: '=?',
isDisabled: '=?'
},
controller: function() {
this.setHeading = function(element) {
this.heading = element;
};
},
link: function(scope, element, attrs, accordionCtrl) {
accordionCtrl.addGroup(scope);
scope.openClass = attrs.openClass || 'panel-open';
scope.panelClass = attrs.panelClass;
scope.$watch('isOpen', function(value) {
element.toggleClass(scope.openClass, value);
if (value) {
accordionCtrl.closeOthers(scope);
}
});
scope.toggleOpen = function($event) {
};
}
};
})
问题是,当我执行的应用程序,我得到以下错误:
Controller 'accordionGroup', required by directive 'accordionTransclude', can't be found!
错误link
任何想法?
您的指令模板是否需要控制器'accordionGroup'?如果是这样,你是否在任何地方定义了一个控制器'accordionGroup'? –
我已经复制了该指令,通过accordionGroupLazyOpen更改了名称accordionGroup并禁用了toggleOpen函数,因为它没有做任何事情。这是它做的唯一改变。更改名称并清空toggleOpen功能。 – Serginho
显然还有一些其他指令需要AccordionGroup,因为你重命名了它,所以他们找不到它。 – koox00