AngularJS折叠指令。除了自我之外全部崩溃

时间:2013-07-12 14:07:41

标签: angularjs angularjs-directive

我正在努力为折叠/扩展指令寻找最佳解决方案,其行为类似于手风琴,即。页面上只有一个折叠/展开指令必须一次打开。

最好的方法是什么,并获得扩展指令,告诉其他指令崩溃?我可以使用隔离范围,父控制器,广播事件吗?基本上我在指导间沟通方面遇到了困难。

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

1 个答案:

答案 0 :(得分:1)

我最终使用来自父控制器的$ broadcast。 expanded指令要求父控制器广播一个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来获取父控制器,这不是很优雅。有什么方法可以解决这个问题吗?