嵌套的Angular指令触发父对象上的作用域函数
Nested Angular directives triggering scope functions on parents
我创建了一个相当简单的accordian,它包括accordian指令和accordian项指令。外部accordian指令只是为项目提供了一种注册和通信的方式(例如,当一个项目被点击时,其他项目应该关闭)。
手风琴似乎能正常工作,直到我把一个放在另一个里面。当我打开或关闭属于内部手风琴的面板时,它会切换父手风琴的包含项。
我知道这与继承的作用域有关,因为如果我从内部accordian控制台.log(作用域),它会记录2个作用域对象,但我不知道如何使内部accordiant不继承父级的作用域,并且仍然正常工作,因为它需要访问我授予它访问权限的HTML属性。
希望代码能更有意义。
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函数,外部指令将内部指令的触发器用于自身。这是冒犯性的台词。
element.fund('.accordian trigger').on('click',function(event){
很明显,它也会将行为附加到任何子指令中具有该类的任何元素上。
现在,如果我能找到一个jQuery选择器,它会寻找".accordian触发器",但当它到达".accardian"时不会再深入下去就好了
相关文章:
- 创建对象函数原型和代码是错误的
- JavaScript模块模式-如何在使用对象/函数之前激发构造函数/init函数
- 如何从onclick字符串中引用javascript对象函数
- 更改对象函数仅用于示例
- javascript和jQuery的嵌套对象函数中的变量范围
- 将对象函数传递给请求动画帧时丢失对象引用
- 对象函数返回函数而不是值
- 使用onclick调用属性对象函数
- javascript拉斐尔对象函数传递
- 如何从onClick事件调用对象函数
- 可以't获取具有“t”的对象变量;这个“;由setTimeout()函数调用的对象函数中的属性
- 对象没有't继承父对象函数
- 调用父对象函数
- "这个“;对象函数内部的引用
- 将变量添加到对象函数调用的末尾
- 传单错误:对象函数没有方法'createIcon'在LayerGroup中创建自定义图标标记时
- TypeError:对象函数Object(){〔本机代码〕}没有方法'方法'
- 挖空 - 单击绑定到对象函数 - 范围问题
- 类型错误: 对象函数...没有方法“打开”
- JavaScript 对象函数