Ember.js 将变量从组件中的回调函数传递到模板
我上传了一个带有ember cli dropzone()的文件。这个很好用。现在我需要用文件名更新我的模板 在一个组件中,我有一个回调函数中的文件名。但现在我需要将其传递给routes setupController函数。因此我可以使用controller.set,如下所示 组件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',
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函数时的错误相同。