首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AngularJS服务( Vue.js )

AngularJS服务( Vue.js )
EN

Stack Overflow用户
提问于 2016-11-07 16:04:31
回答 2查看 1.2K关注 0票数 1

我是Vue.js的新手,我在AngularJS中寻找类似于服务的服务,特别是存储一次数据并在整个应用程序中获取数据。

我将主要存储网络请求和其他承诺的数据的结果,因此我不需要在非常状态下再次获取数据。

我和Webpack一起使用Vue.JS 2.0。

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-24 03:16:40

我认为你正在寻找的是vuex,它可以共享来自每个组件的数据。

下面是我的代码中的一个基本演示。

store/lottery.module.js

代码语言:javascript
复制
import lotteryType from './lottery.type'


const lotteryModule = {

    state: {participantList: []},
    getters: {},
    mutations: {
        [lotteryType.PARTICIPANT_CREATE] (state, payload) {
            state.participantList = payload;
        }
    },
    actions: {
        [lotteryType.PARTICIPANT_CREATE] ({commit}, payload) {

            commit(lotteryType.PARTICIPANT_CREATE, payload);
        }
    }
};

export default lotteryModule;

store/lottery.type.js

代码语言:javascript
复制
const PARTICIPANT_CREATE = 'PARTICIPANT_CREATE';

export default {PARTICIPANT_CREATE};

存储/index.js

代码语言:javascript
复制
Vue.use(Vuex);
const store = new Vuex.Store();
store.registerModule('lottery', lotteryModule);

export default store;

组件/lottery.vue

代码语言:javascript
复制
<template>

<div id="preparation-container">
    Total Participants: {{participantList.length}}
</div>

</template>


<script>

import router from '../router';
import lotteryType from '../store/lottery.type';


export default {
    data () {
        return {
        }
    },
    methods: {
    },
    computed: {
        participantList() {
            return this.$store.state.lottery.participantList;
        }
    },
    created() {
        this.$store.dispatch(lotteryType.PARTICIPANT_CREATE, [{name:'Jack'}, {name:'Hugh'}]);
    },
    mounted() {

    },
    destroyed() {

    }
}

</script>
票数 2
EN

Stack Overflow用户

发布于 2016-11-07 17:08:26

在Vue2中,您不需要特定于Vue的服务,因为它是基于使用模块的现代版本的JavaScript。因此,如果您想在代码中的不同位置重用某些服务,可以按以下方式定义和导出它:

代码语言:javascript
复制
export default {
    someFunction() {
        // ...
    },
    someOtherFunction() {
        // ...
    }
};

然后从您的Vue代码中导入:

代码语言:javascript
复制
import service from 'filenameofyourresources';

export default {
    name: 'something',
    component: [],
    data: () => ({}),
    created() {
        service.someFunction();
    },
};

请注意,这是ES6代码,需要转换到ES5,然后才能真正使用今天的浏览器。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40469472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档