假设我已经构建了某种 Aurelia 组件。对于此示例,假设我构建了一个名为 ui-money 的假设组件。
假设 ui-money 组件包含一个文本输入元素,以及显示汇率的输入旁边的另一个元素(例如 span)。本质上,类似于:
<template>
<input value.bind="amountStr" ... >
<span>${exchange_rate}</span>
</template>
然后我构建了一个包含 <ui-money> 元素的 Aurelia 视图(页面)。
我的问题是这样的:假设我想把重点放在“ui-money”元素上。
实际上,我不想知道 ui-money 元素的内部构成(白盒知识),也不应该想要。但显然我需要将焦点转到 ui-money 元素内的 INPUT 元素。
所以,对我来说,似乎我需要让 ui-money 元素执行设置焦点的行为。
现在最明显的第一个选项是为 ui-money 元素提供一个引用,<ui-money ref="purchasePriceUx">
并让 ui-money 视图模型公开某种takeFocus()
方法。然后我们可以调用
purchasePriceUx.takeFocus()
.
但我很想知道是否有更好的方法来实现这一点,同时仍保持相同水平的解耦。