Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Vue变量值在请求后未更新_Javascript_Html_Vue.js_Vuejs2_Frontend - Fatal编程技术网

Javascript Vue变量值在请求后未更新

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> 在方法返回后,匹配将在方法

大家好,我在变量值方面遇到了麻烦

在请求内部,我正在匹配每个数组值(如果它们是匹配的),然后将匹配变量更新为true(如果它们是匹配的)。问题是返回的match变量在请求内部更新后,没有在请求外部更新。如何获取更新的匹配值

模板

<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'])}