File 输入类型=";文件";在Ember.js中

File 输入类型=";文件";在Ember.js中,file,ember.js,input,components,action,File,Ember.js,Input,Components,Action,我编写了一个Ember组件,它表示可以处理文件上传的样式化输入字段。 为了实现这一点,我使用了和。具有可见性:隐藏,一旦触发上的单击事件,我将在Ember组件的操作处理中触发不可见上的单击事件 我的问题是,在选择文件后,操作永远不会到达我的余烬组件 添加文档输入。hbs <div {{action "add"}} class="floating-button"> <span>+</span> </div> {{input multiple=

我编写了一个Ember组件,它表示可以处理文件上传的样式化输入字段。 为了实现这一点,我使用了
具有
可见性:隐藏
,一旦触发
上的单击事件,我将在Ember组件的操作处理中触发不可见
上的单击事件

我的问题是,在选择文件后,操作永远不会到达我的余烬组件

添加文档输入。hbs

<div {{action "add"}} class="floating-button">
    <span>+</span>
</div>
{{input multiple="true" action="upload" on="change" accept="image/png,image/jpeg,application/pdf" type="file"}}
import Ember from 'ember';

export default Ember.Component.extend({
    actions: {
        upload() {
            console.log('This never happens');
        },
        add() {
            Ember.$("input[type='file']").click();
        }
    }
});
我想这与我触发动作中的点击事件有关。这样,第二次在视图中发生操作时,它不会到达组件

余烬版本:2.7.0

这是一个新版本。 如建议的那样,您可以使用本机输入元素和闭包操作来截获
change
事件


+
就像@Ramy说的那样

<input
  multiple="true"
  onchange={{action "upload"}}
  accept="image/png,image/jpeg,application/pdf"
  type="file"
/>

actions: {
  upload: function(event) {
    console.log('upload');
  }
}

行动:{
上传:功能(事件){
console.log('upload');
}
}

通过实现这一点,为我工作。

@Schnodderbalken
Ember.$(“输入[type='file'])。单击()将导致单击文档中的所有文件输入。您应该将其替换为:
this.$(“输入[type='file']”)。单击()是的,当然。在这种情况下,这并不重要,因为它是文档中唯一的输入,而问题就存在于其他地方。谢谢你的建议。