Javascript 嵌套的角度指令触发父对象上的作用域函数
我已经创建了一个相当简单的手风琴,其中包括一个手风琴指令和手风琴项目指令。外部手风琴指令只是为项目提供了一种注册和通信的方式,例如,当单击一个项目时,其他项目应关闭 手风琴似乎工作正常,直到我把一个套在另一个里面。当我打开或关闭属于内部手风琴的面板时,它会切换父手风琴的包含项 我知道这与继承的作用域有关,因为如果我从内部accorbian控制台中运行console.logscope,它会记录2个作用域对象,但我不确定如何让内部accorbian不继承父级的作用域,并且仍然正常工作,因为它需要访问我授予它访问权限的HTML属性 完全希望代码会更有意义Javascript 嵌套的角度指令触发父对象上的作用域函数,javascript,angularjs,angularjs-directive,angularjs-scope,Javascript,Angularjs,Angularjs Directive,Angularjs Scope,我已经创建了一个相当简单的手风琴,其中包括一个手风琴指令和手风琴项目指令。外部手风琴指令只是为项目提供了一种注册和通信的方式,例如,当单击一个项目时,其他项目应关闭 手风琴似乎工作正常,直到我把一个套在另一个里面。当我打开或关闭属于内部手风琴的面板时,它会切换父手风琴的包含项 我知道这与继承的作用域有关,因为如果我从内部accorbian控制台中运行console.logscope,它会记录2个作用域对象,但我不确定如何让内部accorbian不继承父级的作用域,并且仍然正常工作,因为它需要访问
angular.module('app.directives').directive('AccordianItem', [function () {
return {
require:'^Accordian',
restrict: 'EA',
scope: {
isOpen: '=?',
isDisabled: '=?'
},
link: function (scope, element, attrs, accordionCtrl) {
// Watch the isOpen variable
scope.$watch('isOpen', function(value) {
// Open or close this panel
if (value){
scope.openPanel();
}
else{
scope.closePanel();
}
});
scope.openPanel = function(){
// Removed for brevity
};
scope.closePanel = function(){
// Removed for brevity
};
// Toggle function
scope.toggleOpen = function() {
// Removed for brevity
};
// Add trigger behaviour
element.find('.accordian-trigger').on('click', function (event) {
scope.toggleOpen();
});
}
};
}]);
任何建议都将不胜感激。Doh!我当时很蠢。内部指令没有调用外部指令的toggle函数,外部指令正在为自己使用内部指令的触发器。这是令人不快的界线 元素。查找“.accordian trigger”。在“单击”时,函数事件{ 它显然也会将该行为附加到任何子指令中具有该类的任何元素
现在,如果我能找到一个jQuery选择器,它将查找.accorbian触发器,但当它到达一个.accorbian作用域时,它不会再深入。accorbian作用域不会从它们的父级继承。但是你可以使用$scope.$parent访问父级作用域。看看这里:我的内部accorbian如何能够意外调用父级accorbian触发器的函数范围?抱歉,我似乎误解了您的问题。您可以添加嵌套accordion时使用的标记吗?此外,accordion指令的代码也会很有帮助