Это мой код компонента vue
<div v-if = "$can('employee-create')" class = "card-tools">
<router-link to = "/admin/addphonebook" class = "btn btn-success">
Add New
<i class = "fa fa-phone"></i>
</router-link>
</div>
Это файл resources/assets/js/mixins/Permissions.vue.
export default {
methods: {
$can(permissionName) {
let route = window.routes.permission;
axios.get(route+`/${permissionName}`)
.then((resounse)=> {
return true;
})
.catch((error)=> {
return false;
});
},
},
};
Это resources/assets/js/app.js для импорта миксина
import Permissions from './mixins/Permissions';
Vue.mixin(Permissions);
Функция $can возвращает значение true, но кнопка «Добавить новый» не отображается
v-если не вернуть истинное значение
Кто-нибудь может мне помочь? заранее спасибо






@Чаба Гергели решил вашу проблему. Когда вы получаете данные с сервера, метод $can возвращает true один раз за секунду или меньше, но после вызова $can стал возвращать false. Вы можете создать переменную с именем success и сохранить результат вызова axios.
Это должно быть что-то вроде этого
<div v-if = "success" class = "card-tools">
<router-link to = "/admin/addphonebook" class = "btn btn-success">
Add New
<i class = "fa fa-phone"></i>
</router-link>
</div>
export default {
data(){
return {
success:false
}
},
methods: {
$can(permissionName) {
let route = window.routes.permission;
axios.get(route+`/${permissionName}`)
.then((resounse)=> {
this.success = true;
//return true;
})
.catch((error)=> {
this.success = false;
//return false;
});
},
},
P.S. Bocsi @Csaba Gergely, ha elhappoltam eloled a kerdest :(
Вы получаете обещание от axios. И это не определено при рендеринге. Сохраните логическое значение проверки разрешений в data() и защитите свой сервер. :)