从服务文件分派变化
Dispatch mutations from service file
我有一个ApiService()
,我正在抽象我的API调用。我愿意......dispatch('SET_BUSY')
和dispatch('SET_NOT_BUSY')
应用级突变
TypeError: dispatch is not a function. (In 'dispatch('SET_BUSY')', 'dispatch' is undefined)
/vuex actions.js
import { ApiService } from './services';
export const setAppMode = function ({ dispatch }) {
ApiService({
noun: 'Application',
verb: 'GetMode'
}, response => {
dispatch('SET_APP_MODE', response.Data.mode);
},
dispatch);
};
/vuex services.js
import Vue from 'vue';
export const ApiService = (options = {}, callback, dispatch) => {
let endpoint = 'localhost/api/index.php';
let parameters = options.data;
dispatch('SET_BUSY');
Vue.http.post(endpoint, parameters, []).then((promise) => {
return promise.text();
}, (promise) => {
return promise.text();
}).then(response => {
response = JSON.parse(response);
dispatch('SET_NOT_BUSY');
if (response.Result === 'ERROR') {
console.log('ERROR: ' + response.Error.Message);
}
callback(response);
});
};
action函数期望store实例作为第一个参数。这通常由Vuex自动完成。
当在Vue实例中使用一个动作时,在Vuex 1中完成它的方法如下:
import { setAppMode } from './actions'
new Vue({
vuex: {
actions: {
setAppMode
}
}
})
现在您可以使用this.setAppMode()
并将存储自动用作第一个参数。
注意:还需要设置虚拟机的store
属性
import store from `./store`
// and inside the VM options:
{
store: store
}
如果store
没有设置为虚拟机实例,您仍然可以将其作为参数手动传递:
this.setAppMode(store);
相关文章:
- 分派点击事件并保留击键修饰符
- 单击页面上的链接后高度发生变化
- React redux初始化功能,无论状态变化如何
- 角度ng变化或ng点击选择can'不起作用
- 每个选择器的Jquery css颜色都在变化,但字体大小却没有变化
- JS幻灯片与CSS背景颜色变化
- 重新加载页面时Javascript变量发生变化
- 如何获得Bootstrap Datepicker的年和月,因为它在变化
- 如何用jquery替换字符串中可能变化的字符
- 检测数据的变化
- 如何检测和打印变化变量LESS
- 当文本不断变化时,如何避免在按钮内移动文本
- 当数据库中的某些内容发生变化时调用HTTP方法Meteor.js
- jQuery将侦听器的大小调整为只触发宽度的变化
- 根据元素高度和宽度的百分比变化增加或减少字体大小
- 调用$.each()函数时上下文发生变化
- 创建一个不断变化的谷歌涂鸦风格的标题
- Javascript对象颜色动态变化
- 如果在编辑中下拉值发生变化,如何执行功能
- 从服务文件分派变化