我目前正在开发一个使用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
)
然后,一旦完成这个点击/选择,我想运行并初始化我的滑块组件(这个代码太长了......)。滑块中的所有功能再次在指令的链接中定义。那时没有控制器。
答案 0 :(得分:1)
就个人而言,我更喜欢使用服务进行数据(和潜在的行为)共享。如果可能,我尝试使用服务的API并使用事件作为最后的手段。但当然,每种情况都不同......: - )