Javascript Vue变量值在请求后未更新
大家好,我在变量值方面遇到了麻烦 在请求内部,我正在匹配每个数组值(如果它们是匹配的),然后将匹配变量更新为true(如果它们是匹配的)。问题是返回的match变量在请求内部更新后,没有在请求外部更新。如何获取更新的匹配值 模板Javascript Vue变量值在请求后未更新,javascript,html,vue.js,vuejs2,frontend,Javascript,Html,Vue.js,Vuejs2,Frontend,大家好,我在变量值方面遇到了麻烦 在请求内部,我正在匹配每个数组值(如果它们是匹配的),然后将匹配变量更新为true(如果它们是匹配的)。问题是返回的match变量在请求内部更新后,没有在请求外部更新。如何获取更新的匹配值 模板 <template> <div>{{$acl(['post.edit'])}}</div> <!-- always display false --> </template> 在方法返回后,匹配将在方法
<template>
<div>{{$acl(['post.edit'])}}</div> <!-- always display false -->
</template>
在方法返回后,
匹配
将在方法返回后更改,因此您将始终得到false
您应该在组件实例上声明一个字段,然后从插件内部更改该变量
<template>
<div>{{$acl(['post.edit']), isAMatch}}</div>
</template>
必须使用mixin,如下所示:
{
data: () => {
return {
aclConfig
}
},
created() {
this.aclConfig = this.$store.getAclConfig(); // or maybe using Promise
},
methods: {
checkAccess(roles) {
let match = false;
_.each(roles, (role) => {
const splited = value.split('.');
const moduleName = splited[0];
const actionName = splited[1];
if (this.aclConfig[moduleName]) {
_.each(this.aclConfig[moduleName], (actions) => {
if (actions.action_name === actionName) {
match = true;
return false;
}
});
}
});
return match;
}
}
}
<template>
<div>{{ checkAccess(['post.edit']) }}</div>
</template>
您可以在模板中使用以下内容:
{
data: () => {
return {
aclConfig
}
},
created() {
this.aclConfig = this.$store.getAclConfig(); // or maybe using Promise
},
methods: {
checkAccess(roles) {
let match = false;
_.each(roles, (role) => {
const splited = value.split('.');
const moduleName = splited[0];
const actionName = splited[1];
if (this.aclConfig[moduleName]) {
_.each(this.aclConfig[moduleName], (actions) => {
if (actions.action_name === actionName) {
match = true;
return false;
}
});
}
});
return match;
}
}
}
<template>
<div>{{ checkAccess(['post.edit']) }}</div>
</template>
{{checkAccess(['post.edit'])}