我正在努力为表现得像手风琴的折叠/展开指令找到最佳解决方案,即。任何时候都只能打开页面上的一个折叠/展开指令。
解决这个问题的最佳方法是什么,并获得一个扩展指令来告诉其他指令崩溃?我可以使用隔离范围、父控制器、广播事件吗?基本上,我很难理解指令间通信。
我知道有可用的手风琴指令,但我想自己学习构建指令。谢谢。
我正在努力为表现得像手风琴的折叠/展开指令找到最佳解决方案,即。任何时候都只能打开页面上的一个折叠/展开指令。
解决这个问题的最佳方法是什么,并获得一个扩展指令来告诉其他指令崩溃?我可以使用隔离范围、父控制器、广播事件吗?基本上,我很难理解指令间通信。
我知道有可用的手风琴指令,但我想自己学习构建指令。谢谢。
我最终使用了来自父控制器的 $broadcast 。扩展指令要求父控制器广播一个collapseChange 事件,所有指令都在监听该事件。
父控制器
$scope.broadcastCollapseChange = function (id) {
$scope.$broadcast('collapseChange', { 'id': id});
};
指示
scope.collapsed = true;
var onCollapseChange = function (v) {
if (scope.collapsed == false)
scope.$parent.broadcastCollapseChange(scope.$id);
}
scope.$watch('collapsed', onCollapseChange);
scope.$on('collapseChange', function (event, args) {
if (scope.collapsed == false && args.id != scope.$id)
scope.collapsed = true;
});
目前我必须在指令中使用 $parent 来获取父控制器,这不是很优雅。有什么办法可以解决这个问题吗?