1

我正在努力为表现得像手风琴的折叠/展开指令找到最佳解决方案,即。任何时候都只能打开页面上的一个折叠/展开指令。

解决这个问题的最佳方法是什么,并获得一个扩展指令来告诉其他指令崩溃?我可以使用隔离范围、父控制器、广播事件吗?基本上,我很难理解指令间通信。

我知道有可用的手风琴指令,但我想自己学习构建指令。谢谢。

4

1 回答 1

1

我最终使用了来自父控制器的 $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 来获取父控制器,这不是很优雅。有什么办法可以解决这个问题吗?

于 2013-07-13T14:41:59.833 回答