【问题标题】:What is the ideal way of communicating within the same level sibling directives?在同级同级指令中进行通信的理想方式是什么?
【发布时间】:2017-06-19 14:06:10
【问题描述】:

我在控制器中有一个代码段,它在 ng-repeat 语句中定义指令。

    <div class="Value" ng-repeat="value in valueList">
       <my-directive inner-value="value"></my-directive>
   </div>

这里我想在指令之间进行通信(例如 - 单击第一个指令的按钮时会出现第二个指令中的按钮)

通过控制器在同一级别指令之间进行通信的理想方式是什么

【问题讨论】:

  • 能否将这个问题概括为 oop ?我认为问题和答案都是面向对象的概念,而不仅仅是角度

标签: javascript angularjs oop


【解决方案1】:

我知道有两种方法:

活动

  • 子组件触发事件。

  • 家长收到并决定做什么

服务

  • 所有组件都注入服务
  • 服务有一个所有组件都监听的主题
  • 点击按钮时,任何组件都可以调用服务进行更新
  • 对于每次更新,每个组件都知道更改

我更喜欢哪个?

基于服务

为什么?

  • 事件的缺点

    • 事件会使流程复杂化,所有组件都固定在其位置。我们还需要担心它们之间的数据共享。多个输入,它们的状态等,一团糟。
    • 如果有很多更改,则很难跟踪
    • 逻辑驻留在组件中,难以测试和维护。我喜欢虚拟组件
  • 服务优势

    • 所有逻辑都驻留在服务中,易于测试和维护
    • 组件可以移动,改变它们的位置仍然很好用
    • 添加新组件轻而易举,无需重新重写整个逻辑
    • 利用 rx 编程的强大功能并简化任何复杂的逻辑

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-12
    • 1970-01-01
    • 2020-02-11
    • 1970-01-01
    相关资源
    最近更新 更多