如何在ember-file-upload中预先形成组件操作而不是路由操作

时间:2017-11-07 04:11:33

标签: javascript ember.js

我正在使用该包 https://github.com/tim-evans/ember-file-upload

在他们的示例中,他们调用路线动作来上传图像

             onfileadd=(route-action "uploadImage")}}

但我想改为调用组件动作

我试过

                 onfileadd="uploadImage"}}

并在组件中添加了操作:

uploadImage: function (file) {
  console.log(file);
  let self = this;
  RSVP.cast(Ember.$.get(ENV.APP.API_HOST + "/v1/teams/signed_url/")).then(function (response) {
    return file.upload(response.url, {
      data: response.credentials
    });
  }).then(function (response) {
    self.set('url', response.headers.Location);
  });
},

但是我得到了错误:

  

未捕获的TypeError:无法读取属性' uploadImage'未定义的

如果我将其移动到路由,该操作将按预期工作,但我需要更新组件中的正确属性(路由中不存在)

知道如何将其更改为组件功能吗?

1 个答案:

答案 0 :(得分:1)

您应该使用action帮助程序:

onfileadd=(action "uploadImage")}}

还要确保uploadImage在组件的actions哈希中:

export default Ember.Component.extend({
  // ...
  actions: {
    uploadImage() { // <-- make sure this is inside the actions hash
      // ...
    }
  }
})