Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从外部打开和关闭余烬电源选择_Javascript_Dom_Events_Ember.js_Ember Power Select - Fatal编程技术网

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();