【发布时间】:2019-02-05 19:16:46
【问题描述】:
我想知道如何从 .js 文件(提供文件上传服务的类)向组件发出事件。我的想法是为进度 UI 元素发出四个事件。
我的服务 .js 文件是这样的:
import Vue from 'vue';
export const UploaderService = new Vue({
methods: {
orchestrateDataPublication() {
return new Promise((resolve, reject) => {
if (this.checkRequiredData()) {
// emit 25% done
this._getSignedUrl().then(signedUrlResponse => {
// emit 50% done
this._uploadDataset(signedUrlResponse).then(uploadResponse => {
等等。
这是在 Vue 组件中导入的:
<script>
import {UploaderService} from '../service/uploaderService.js'
export default {
upload () {
this.$refs['datasetForm'].validate((valid) => {
if (valid) {
UploaderService.orchestrateDataPublication().then((response) => {
this.$emit(response.type, response.data)
}, (err) => {
this.$emit(err.type, err.data)
})
} else {
this.$emit('appInforms', ' -PLEASE, check all your inputs- ')
}
})
}
这里上传使用 orchestrateDataPublication 作为承诺,但我需要以某种方式发出事件。这可能吗?
【问题讨论】:
-
看看event bus。这基本上是与您的主应用程序分开的 Vue 实例,您可以在其上发出和监听事件。
标签: javascript vue.js ecmascript-6 vuejs2 vue-component