在 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 模板:
<button {{on "click" this.actions.outerAction}}>Click me</button>
这个示例演示了如何在 EmberJS 中嵌套定义 actions,并在一个 action 中调用另一个 action。
结论
在 EmberJS 中,我们可以使用 actions
对象来定义组件中的事件处理程序。当我们需要在一个 action 中调用另一个 action 时,可以使用嵌套定义或者直接使用 this
来引用其他 action。这些方法都可以很好地解决问题,但是推荐使用后一种方法。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/25643