Ember.js 将变量从组件中的回调函数传递到模板

Ember.js 将变量从组件中的回调函数传递到模板,ember.js,Ember.js,我上传了一个带有ember cli dropzone()的文件。这个很好用。现在我需要用文件名更新我的模板 在一个组件中,我有一个回调函数中的文件名。但现在我需要将其传递给routes setupController函数。因此我可以使用controller.set,如下所示 组件JS: export default Ember.Component.extend({ actions: { submit: function(){ this.sendAction('action',

我上传了一个带有ember cli dropzone()的文件。这个很好用。现在我需要用文件名更新我的模板

在一个组件中,我有一个回调函数中的文件名。但现在我需要将其传递给routes setupController函数。因此我可以使用controller.set,如下所示

组件JS:

export default Ember.Component.extend({
  actions: {
   submit: function(){
     this.sendAction('action', this.submission);
   }
 },
 uploadSuccess: function(file, response) {
   if (response == '200') {
    return file.name;
   }
 }
});
路线内的设置控制器:

setupController: function(controller, model){
    var submission = this.store.createRecord('submission', { filter: { assignment_id: model.id } });

    submission.filename = filenamePlease; 
    controller.set('submission', submission);

}
模板内的内容:

{{submission-form submission=submission user=user action='createSubmission'}}
{{submission-form
    submission=submission
    user=user
    action='createSubmission'
    uploadAction='uploadSuccess'
}}
部件HBS:

<form {{action 'submit' on='submit'}}>
  {{drop-zone url='http://localhost:4200/api/uploads' success=uploadSuccess}}
  {{input type="hidden" value=submission.filename}}
  <button class="bnt" type="submit">{{buttonLabel}}</button>
</form>

{{drop zone url='1〕http://localhost:4200/api/uploads'success=uploadSuccess}}
{{input type=“hidden”value=submission.filename}
{{buttonLabel}}

在上传文件并且uploadSuccess返回文件名后,如何获取要更新的相应模板?

在组件JavaScript文件中:

uploadSuccess(file, response) {
    if (response == '200') {
        this.sendAction('uploadAction', file.name);
    }
}
模板中的组件声明:

{{submission-form submission=submission user=user action='createSubmission'}}
{{submission-form
    submission=submission
    user=user
    action='createSubmission'
    uploadAction='uploadSuccess'
}}
控制器中的操作(不在路线中):

您说您在
uploadSuccess
中的上下文错误。您可以尝试:

uploadSuccess: Ember.run(this, function(file, response) {
    if (response == '200') {
        this.sendAction('uploadAction', file.name);
    }
})

setupController
在路线和模板完全设置之前执行一次。组件稍后渲染。所以,你必须改变过去。我也尝试过submission.set('filename',file.name);在uploadSuccess函数中。我得到了未定义的提交。您的解决方案在我看来很好,但是:在组件文件中:this.sendAction('uploadAction',file.name);这是dropzone对象。。。所以我明白了。sendAction不是一个函数DropZone找不到新的uploadSuccess函数。“无法读取未定义的属性‘apply’”,这与完全删除uploadSuccess函数时的错误相同。