Javascript 如何从外部打开和关闭余烬电源选择
我知道,但不完整。我想打开和关闭外部下拉列表 我可以在单击包装器组件时发送一个Javascript 如何从外部打开和关闭余烬电源选择,javascript,dom,events,ember.js,ember-power-select,Javascript,Dom,Events,Ember.js,Ember Power Select,我知道,但不完整。我想打开和关闭外部下拉列表 我可以在单击包装器组件时发送一个mousedown事件,因此ember power select触发器打开!。但如果我再次单击,它不会关闭。更准确地说,它会快速关闭并再次打开 我的假设是组件正在侦听blur事件以关闭,然后mousedown再次到达并打开触发器 有没有人能让它工作起来?还是另一种选择??我完全迷路了:) 谢谢你的帮助 wrapper-component.js didInsertElement() { this._su
mousedown
事件,因此ember power select
触发器打开!。但如果我再次单击,它不会关闭。更准确地说,它会快速关闭并再次打开
我的假设是组件正在侦听blur
事件以关闭,然后mousedown
再次到达并打开触发器
有没有人能让它工作起来?还是另一种选择??我完全迷路了:)
谢谢你的帮助
wrapper-component.js
didInsertElement() {
this._super(...arguments);
this.element.addEventListener('mousedown', (event) => {
event.stopPropagation();
const eventedElement = this.element.querySelector('.ember-power-select-trigger');
const mouseDownEvent = new MouseEvent('mousedown');
eventedElement.dispatchEvent(mouseDownEvent);
});
},
根据文档,与触发器/组件交互的唯一方式是通过ember power select组件的子组件、块和动作中提供的只读API 由于您已经可以打开触发器,因此可以将API缓存在组件(或路由控制器)中定义的
onchange
事件操作中,您可以在其中渲染余烬电源选择:
渲染组件时,只需向onopen提供一个操作:
{{#ember-power-select
options=options
selected=selectedOption
onchange=(action "someAction")
onopen=(action "cacheAPI")
as |option|}}
{{option}}
{{/ember-power-select}}
在渲染它的组件或控制器中:
actions: {
cacheAPI(options) {
if (this.powerSelectAPI) return;
this.set('powerSelectAPI', options);
// if you just want the actions:
// this.set('powerSelectAPI', options.actions);
}
}
然后您可以通过API打开/关闭触发器:
this.get('powerSelectAPI').actions.close();
根据文档,与触发器/组件交互的唯一方式是通过ember power select组件的子组件、块和动作中提供的只读API 由于您已经可以打开触发器,因此可以将API缓存在组件(或路由控制器)中定义的
onchange
事件操作中,您可以在其中渲染余烬电源选择:
渲染组件时,只需向onopen提供一个操作:
{{#ember-power-select
options=options
selected=selectedOption
onchange=(action "someAction")
onopen=(action "cacheAPI")
as |option|}}
{{option}}
{{/ember-power-select}}
在渲染它的组件或控制器中:
actions: {
cacheAPI(options) {
if (this.powerSelectAPI) return;
this.set('powerSelectAPI', options);
// if you just want the actions:
// this.set('powerSelectAPI', options.actions);
}
}
然后您可以通过API打开/关闭触发器:
this.get('powerSelectAPI').actions.close();