在多个地方使用刺激控制器



我希望能够在web应用程序的多个地方使用刺激控制器。我想这样做:

<div data-controller="mycontroller">
<OneComponent />
</div>
<SomeOtherComponent />
<div data-controller="mycontroller">
<NewComponent />
</div>

但是控制器似乎只是连接到第一个组件,而不是第二个组件。有可能像我打算的那样使用它吗?

谢谢!

刺激控制器可以重用。请看这个示例。

可能阻止此工作的问题是,如果有一个JS错误,或者你希望嵌套组件中的元素在父组件中使用,如果它们还没有被渲染。

const application = Stimulus.Application.start()
application.register("hello", class extends Stimulus.Controller {
connect() {
console.log("connect to", this.element.getAttribute("data-language"))
}

static get targets() {
return [ "name" ]
}

greet() {
if (this.element.getAttribute("data-language") == "es-ES") {
console.log(`¡Hola, ${this.nameTarget.value}!`);
} else {
console.log(`Hello, ${this.nameTarget.value}!`);
}
}
})
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<script src="https://unpkg.com/stimulus/dist/stimulus.umd.js"></script>
</head>
<body>
<div data-controller="hello" data-language="en-US">
<input data-hello-target="name" type="text" value="John">
<button data-action="click->hello#greet">Greet</button>
</div>

<div data-controller="hello" data-language="es-ES">
<input data-hello-target="name" type="text" value="Jose">
<button data-action="click->hello#greet">Saudar</button>
</div>
</body>
</html>

相关内容

  • 没有找到相关文章

最新更新