沟通两个Angular组件的最佳方式是什么?

时间:2015-11-25 14:51:34

标签: angularjs

我目前正在开发一个使用Angular 1.x构建的应用程序,我想知道哪个是通信两个不同组件的最佳做法,这些组件最初是在另一个模块中单独工作的。应用程序。其中一个是选择器,另一个是滑块。

基本上,选择器是一个带有link中定义的功能的指令。 滑块也是如此。我的想法是每次单击选择器中的一个选项(ng-click)时用新项目更新滑块。

这是我第一次在Angular中实现这个通信概念,我不知道是否更好地使用外部服务从两个组件中获取和存储数据,使用指令中的事件控制器。欢迎任何建议。

编辑:

这里我展示了我的选择指令的代码片段。基本上我所做的是在链接中有一个ng-click(我的toggle()函数)后更改选择属性:

angular.module('ngExploratory')
 .directive('xplrSelector', (PATH, XplrBaseObject, IdentifierService, DataService) ->
templateUrl: "#{PATH}components/selector/selector.html"
restrict: 'E'
replace: true
transclude: true
scope:
  xplrId: '@'
  xplrJoin: '='
  headers: '='
  content: '='
  limit: '='
link: (scope, element, attrs) ->
  XplrBaseObject.extend scope, element, attrs
  scope.data = {} if not scope.data?
  scope.toggle = () ->
    scope.id = IdentifierService.initialize element
    scope.value = DataService.get scope.id
    scope.data.selected = !scope.data.selected
    scope.commit()
  return
)

然后,一旦完成这个点击/选择,我想运行并初始化我的滑块组件(这个代码太长了......)。滑块中的所有功能再次在指令的链接中定义。那时没有控制器。

1 个答案:

答案 0 :(得分:1)

就个人而言,我更喜欢使用服务进行数据(和潜在的行为)共享。如果可能,我尝试使用服务的API并使用事件作为最后的手段。但当然,每种情况都不同......: - )