gpt4 book ai didi

Ember.js:上传文件组件

转载 作者:行者123 更新时间:2023-12-04 02:46:07 27 4
gpt4 key购买 nike

我需要创建一个 Ember 组件来选择一个文件。
我的页面将包含多个“上传组件”

我读过一篇试图实现的帖子:( https://stackoverflow.com/questions/9200000/file-upload-with-ember-data )但 UploadFileView 直接链接到 Controller 。
我想要更通用的东西......

我想从 View 中删除 App.StoreCardController.set('logoFile'..) 依赖项或从模板中传递字段 (logoFile)...

有什么想法可以改进此代码吗?

   App.UploadFileView = Ember.TextField.extend({
type: 'file',
attributeBindings: ['name'],
change: function(evt) {
var self = this;
var input = evt.target;
if (input.files && input.files[0]) {
App.StoreCardController.set('logoFile', input.files[0]);
}
}
});

和模板:
{{view App.UploadFileView name="icon_image"}}
{{view App.UploadFileView name="logo_image"}}

最佳答案

我完成了一个完整的例子来展示这一点

https://github.com/toranb/ember-file-upload

这是基本的 Handlebars 模板

<script type="text/x-handlebars" data-template-name="person">
{{view PersonApp.UploadFileView name="logo" contentBinding="content"}}
{{view PersonApp.UploadFileView name="other" contentBinding="content"}}
<a {{action submitFileUpload content target="parentView"}}>Save</a>
</script>

这是自定义文件 View 对象
PersonApp.UploadFileView = Ember.TextField.extend({
type: 'file',
attributeBindings: ['name'],
change: function(evt) {
var self = this;
var input = evt.target;
if (input.files && input.files[0]) {
var reader = new FileReader();
var that = this;
reader.onload = function(e) {
var fileToUpload = reader.result;
self.get('controller').set(self.get('name'), fileToUpload);
}
reader.readAsDataURL(input.files[0]);
}
}
});

这是 Controller
PersonApp.PersonController = Ember.ObjectController.extend({
content: null,
logo: null,
other: null
});

最后这里是带有提交事件的 View
PersonApp.PersonView = Ember.View.extend({
templateName: 'person',
submitFileUpload: function(event) {
event.preventDefault();
var person = PersonApp.Person.createRecord({ username: 'heyo', attachment: this.get('controller').get('logo'), other: this.get('controller').get('other') });
this.get('controller.target').get('store').commit();
}
});

如果您启动 django 应用程序,这将在文件系统上删除 2 个文件

关于Ember.js:上传文件组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13923122/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com