diff --git a/src/directive/permission/permission.js b/src/directive/permission/permission.js
index b27f24da..49d1f889 100644
--- a/src/directive/permission/permission.js
+++ b/src/directive/permission/permission.js
@@ -1,11 +1,11 @@
 import store from '@/store'
 
-export default {
-  inserted(el, binding, vnode) {
-    const { value } = binding
-    const roles = store.getters && store.getters.roles
+function checkPermission(el, binding) {
+  const { value } = binding
+  const roles = store.getters && store.getters.roles
 
-    if (value && value instanceof Array && value.length > 0) {
+  if (value && value instanceof Array) {
+    if (value.length > 0) {
       const permissionRoles = value
 
       const hasPermission = roles.some(role => {
@@ -15,8 +15,17 @@ export default {
       if (!hasPermission) {
         el.parentNode && el.parentNode.removeChild(el)
       }
-    } else {
-      throw new Error(`need roles! Like v-permission="['admin','editor']"`)
     }
+  } else {
+    throw new Error(`need roles! Like v-permission="['admin','editor']"`)
+  }
+}
+
+export default {
+  inserted(el, binding) {
+    checkPermission(el, binding)
+  },
+  update(el, binding) {
+    checkPermission(el, binding)
   }
 }