EmberJS actions - 在 `actions` 中嵌套时调用另一个 action

阅读时长 4 分钟读完

在 EmberJS 中,我们可以使用 actions 对象来定义组件中的事件处理程序。有时候,我们可能需要在一个 action 中调用另一个 action,这个时候就需要嵌套定义。

嵌套 actions

在 EmberJS 中,我们可以将多个 actions 定义在同一个 actions 对象中,它们之间是平级关系:

-- -------------------- ---- -------
------ --------- ---- ---------------------

------ ------- ----- ----------- ------- --------- -
  ------- - -
    --------- -
      -- -- ---------
    --
    --------- -
      -- -- --------- ----
    -
  -
-

如果我们想在 action1 中调用 action2,我们可以简单地使用 this.actions.action2()

-- -------------------- ---- -------
------ --------- ---- ---------------------

------ ------- ----- ----------- ------- --------- -
  ------- - -
    --------- -
      -- -- ---------
      -----------------------
    --
    --------- -
      -- -- --------- ----
    -
  -
-

这种方法可以很好地解决问题,但是它并不是最佳实践。在下面的章节中,我们将介绍更好的方法来嵌套 actions。

使用 this

在 EmberJS 中,我们可以使用 this 来引用组件对象本身。因此,我们可以直接使用 this.action2() 来调用 action2

-- -------------------- ---- -------
------ --------- ---- ---------------------

------ ------- ----- ----------- ------- --------- -
  ------- - -
    --------- -
      -- -- ---------
      ---------------
    --
    --------- -
      -- -- --------- ----
    -
  -
-

这种方法更加简洁和清晰,并且可以确保在组件中正确地调用 action。

示例代码

下面是一个示例组件,其中定义了两个嵌套的 actions。当用户点击按钮时,将调用 outerAction,它又会调用 innerAction

-- -------------------- ---- -------
------ --------- ---- ---------------------

------ ------- ----- ----------- ------- --------- -
  ------- - -
    ------------- -
      ------------------ ---------
      -------------------
    --

    ------------- -
      ------------------ ---------
    -
  --
-

HTML 模板:

这个示例演示了如何在 EmberJS 中嵌套定义 actions,并在一个 action 中调用另一个 action。

结论

在 EmberJS 中,我们可以使用 actions 对象来定义组件中的事件处理程序。当我们需要在一个 action 中调用另一个 action 时,可以使用嵌套定义或者直接使用 this 来引用其他 action。这些方法都可以很好地解决问题,但是推荐使用后一种方法。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/25643

纠错
反馈