我正在尝试通过 data-action
在 Stimulus 控制器中监听 Select2 事件。
我有一个 Stimulus 控制器,在其中包含了对 Select2 事件的事件监听器,但是我无法从 HTML 中监听 Select2 事件。
import { Controller } from 'stimulus';
export default class extends Controller {
initialize() {
const $element = window.$(this.element);
$element.select2({
});
$element.on('select2:select select2:unselect', (_event) => {
this.element.dispatchEvent(new Event('change'));
});
}
}
我需要使用 Stimulus 中的 data-action
属性来监听“change”事件,而不是监听“select2”事件。以下代码可以正常工作。但是,如果使用 data-action-"select2:select"
来进行监听,则会失败。
<%= f.select :name, ['name1', 'name2'], data: {'controller' => 'select2'} %>
我想使用Stimulus监听具有data-action
属性的事件。这是Stimulus的预期用法。
我能否使用Stimulus监听Select2事件?
jQuery.Event()
jQuery.trigger('select2:select');
。有关如何强制jQuery将事件分派到DOM以便Stimulus可以监听它们的示例,请参见:jQuery事件委托。然后,您可以使用data-action="jquery:select2:select->controller#method"
。 - Will B.