• Как разобраться в Vue?

    @kristenstewartdadada
    Frontend Developer
    Может вы забыли выучить javascript?) Из всех популярных фреймаорков у vue самый низкий порог входа
    Ответ написан
    Комментировать
  • RBAC (управления доступом на основе ролей) как организовать в nuxt js?

    @grinat
    Вгружаешь права в стор, делаешь там геттер userCan('название пермишена') и собсно все. В шаблона где надо if($store.getters.userCan('купитьТравы')),
    с роутами там вообще просто, через хук router.beforeEach((to, from, next) => {
    if(!store.getters.userCan('купитьТравы')){
    next({name: 'товарищуМайоруДоступЗакрыт'})
    }
    Ответ написан
    Комментировать
  • Выполнять метод через n-интервал времени, но только после первого события?

    Создаете флаг, присваиваете ему false, при первом клике меняете его на true и запускаете интервал.

    примерно так:

    data(){
          return {
            flag: false,
          }
        },
        methods: {
          somefunc(){
                if(this.flag == false) {
                   //do something
                  //то что выполнится в первый раз
                } else {
                   setInterval(func,5000);
                   // то что будет выполняться следующие разы
                }
                this.flag = true;
                
               
            }
          },

    В первый раз она у вас не выполнится. А дальше что-то будет выполняться через интервал. Но это первое что пришло в голову, полагаю способ решения довольно костыльный.
    Ответ написан
    Комментировать
  • Как получить размер слоя в метрах?

    RomanDillerNsk
    @RomanDillerNsk
    JavaScript
    sumrakx, сначала нужно систему координат поменять. Если вы используете подложку например гугла, и на нее накладываете слой с картинкой, например imageOverlay, то у этого слоя можно получить:

    let one = tile.getBounds()._northEast;
            let two = tile.getBounds()._southWest;


    Это будут координаты углов - северо-запад, и юго-восток, нехитрым способом получите, например северо-восток, а потом можно сделать например вот так:

    getWidthAndHeight(southWest, southEast, northEast) { // получаем длины вертикальной и горизонтальной линии
    
    		this.points = [
    
    			new L.LatLng(southWest[0], southWest[1]),
    			new L.LatLng(southEast[0], southEast[1]),
    			new L.LatLng(northEast[0], northEast[1])			
    
    		];
    
    		this.data.width = +(this.points[0].distanceTo(this.points[1])).toFixed(0);
    		this.data.height = +(this.points[1].distanceTo(this.points[2])).toFixed(0);
    
    	}


    высота и ширина в метрах.
    Ответ написан
    Комментировать
  • Как передать в props результат асинхронной функции?

    0xD34F
    @0xD34F Куратор тега Vue.js
    Функцию вызывайте при создании экземпляра компонента, результат записывайте в свойство (кажется, у вас уже есть подходящее - api). Ту странную штуку с computed свойством вырежьте. Выглядеть это будет примерно так:

    created() {
      accessAPI().then(result => this.api = result);
    },

    <imgMap :api="api"></imgMap>

    Если в дочерний компонент не должны передаваться пустые данные, не надо его рендерить, пока данные не будут получены:

    <imgMap v-if="api" :api="api"></imgMap>

    UPD.
    Вынесено из комментариев:

    не могу напрямую вызывать асинхронные методы из обьекта они недоступны. Сейчас я решил проблему так:
    props: {
        api : Object
    },
    data() {
        return {
            apiLocal : null
        }
    }
    async mounted() {
        this.apiLocal = await this. api;
        await this.apiLocal.methods1();
    }

    Вы по-прежнему в качестве значения параметра api передаёте промис. Надо в родителе дождаться его результата - тот первый await из вашего mounted, он в родительском компоненте должен быть. Он, или эквивалентный ему then с коллбеком - как в примере выше.
    Ответ написан
    1 комментарий
  • Как отобразить теги 'option' в 'datalist' даже если не совпадают введенные слова?

    Никак. Это же все обрабатывается браузером как ему заблагорассудится. Не смотря на то что datalist является элементом DOM список который выводится браузером не является таким элементом и соответственно им нельзя никак управлять.
    Ответ написан
    4 комментария