我在nuxt.js项目上并尝试创建全局函数,但出现此错误:
Cannot read property '$toggleBodyClass' of undefined
这是我的代码(plugins / globals.js):
import Vue from 'vue';
Vue.prototype.$toggleBodyClass = (addRemoveClass, className) => {
const elBody = document.body;
if (addRemoveClass === 'addClass') {
elBody.classList.add(className);
} else {
elBody.classList.remove(className);
}
};
Vue.prototype.$setMmodalBackdrop = () => {
this.$toggleBodyClass('addClass', 'modal-open'); // ** How to make this work? **
};
当我在我的组件(components / myComp.vue)中使用它时,这项工作就很好了:
<template>
<div>
<button @click="handelClick">Toggle Class</button>
</div>
</template>
<script>
export default {
methods: {
handleClick() {
this.$toggleBodyClass('addClass', 'modal-open');
},
},
};
</script>
请帮助,谢谢。
答案 0 :(得分:1)
只需更改您的代码
CREATE VIEW C_View
AS
SELECT C.Item,
C.Loc1,
COALESCE((SELECT SUM(Qty) FROM A WHERE A.Item = C.Item AND A.Loc = C.Loc1), 0) -
COALESCE((SELECT SUM(Qty) FROM B WHERE B.Item = C.Item AND B.Loc = C.Loc1), 0)
AS Qty1,
C.Loc2,
COALESCE((SELECT SUM(Qty) FROM A WHERE A.Item = C.Item AND A.Loc = C.Loc2), 0) -
COALESCE((SELECT SUM(Qty) FROM B WHERE B.Item = C.Item AND B.Loc = C.Loc2), 0)
AS Qty2,
...
C.Loc16,
COALESCE((SELECT SUM(Qty) FROM A WHERE A.Item = C.Item AND A.Loc = C.Loc16), 0) -
COALESCE((SELECT SUM(Qty) FROM B WHERE B.Item = C.Item AND B.Loc = C.Loc16), 0)
AS Qty16,
FROM C;
到
this.$toggleBodyClass
答案 1 :(得分:1)
在nuxt中,您可以使用注入功能使它可以从上下文,vuex存储等inject中访问
export default ({ app }, inject) => {
inject('myInjectedFunction', (string) => console.log('That was easy!', string))
}