我有一个扩展和关闭div高度的指令。它使用了多次,所以当用户打开一个盒子时,我想关闭其他打开的盒子。我认为最好发出一个事件,但问题是该指令也会自行关闭,所以没有div可以打开。
我可以忽略来自同一指令的消息吗?
angular.module('cinemaApp')
.directive('expand', function ($rootScope) {
return {
restrict: 'A',
link: function postLink(scope, element, attrs) {
$rootScope.$on('contract', function(payload) {
element.css('height', attrs.fixedheight);
});
scope.$watch('open', function(value) {
element.css('height', (value ? 'auto' : attrs.fixedheight));
$rootScope.$emit('contract');
});
element.css('height', attrs.fixedheight);
}
};
});
答案 0 :(得分:2)
发出事件时,可以传递给侦听器的其他参数。所以你可以像
那样发射$rootScope.$emit('contract', element);
听着
$rootScope.$on('contract', function(event, target) {
if (target != element)
element.css('height', attrs.fixedheight);
});