• Что не так с моим event.bus в vue?

    AntonBrock
    @AntonBrock Автор вопроса
    Alex, Тут 2 компонента и где вызов их ТУТ

    Вот где emit
    <template lang="pug">
        .login-form
            h1 Верни налог
            p номер телефона
            el-form(@submit.prevent.native="sendPhone()", 
                    label-position='left', 
                    :model='loginForm', 
                    :rules="rules",
                    status-icon,
                    ref="loginForm" )
                el-form-item(prop="phone")
                    //- el-input(v-model='loginForm.phone', placeholder="Введите свой номер телефона", id="form_phone" maxlength='12')
                    input(v-model='loginForm.phone', v-mask="'+7(###) ###-##-##'" @ev placeholder="+7()", id="form_phone" ref="telLogin" @mouseout="mouseout" @mouseover="mouseOver")
                button(class="btn", type='button', @click='sendPhone()' :disabled="disBtn" ) Отправить
    </template>
    
    <script>
    
    import { EventBus } from '../../../main';
    
    
    import phoneApi from '../_api/phoneApi.js'
    import {mapActions, mapGetters } from "vuex"
    
    export default {
        data() {
            var validatePhone = (rule, value, callback) => {
                if (value === '') {
                    callback(new Error('Обязательное поле'));
                } else {
                    let re = /^(\+7|7|8)?[\s-]?\(?[489][0-9]{2}\)?[\s-]?[0-9]{3}[\s-]?[0-9]{2}[\s-]?[0-9]{2}$/;
                    const isTrue =  re.test(value);
                    if (!isTrue) {
                        callback(new Error('Неправильный телефон'));
                        this.$refs.telLogin.style.border = '1px solid red'
                    } else {
                        this.$refs.telLogin.style.border = '1px solid green'
                        callback();
                    }
                }
            };
            return {
                phone: false,   
                disBtn: false,
                loginForm: {
                    phone: ''
                },
                rules: {
                    phone: [ {validator: validatePhone, trigger: this.phone = 16 }]
                },
                showChoose: true
            };
        },
        methods: {
            ...mapActions({
                updatePhone: "profile/updatePhone",
                updateEmail: "profile/updateEmail",
                updateName: "profile/updateName",
                updateId: "profile/updateId",
                updateIncoming: "profile/updateIncoming",
                updateIncomingSecondAcc: 'profile/updateIncomingSecondAcc'
            }),
            sendPhone() {
                // блок кнопки на 4 сек 
                this.disBtn = true
                setTimeout(() => {
                    this.disBtn = false
                }, 4000)
                this.$refs.loginForm.validate((valid) => {
                    if (valid) {
                        phoneApi.sendSms(this.loginForm.phone)
                        .then((response) => {
                            this.updatePhone(this.loginForm.phone);
                            this.updateName(response.data.name)
                            this.updateEmail(response.data.email);
                            this.updateId(response.data.id);
                            
                            if(response.data.length >= 2) {
                               this.updateIncoming(response.data[0])
                               this.updateIncomingSecondAcc(response.data[1])
                               
                                EventBus.$emit("emmitTest", this.showChoose);
                            }
                        })
                        .catch((e) => {
                            this.$message.error('Ошибка при отправке смс. Повторите попытку позже')
    
                            if(e.response.status == '429') {
                                this.$message.error('Превышено количество попыток авторизации. Попробуйте позднее')
                            }
                        });
                    } else {
                        return false;
                    }
                });
            },
            mouseOver() {
                this.$refs.telLogin.placeholder = '+7(___) ___ - __ - __'
            },
            mouseout() {
                this.$refs.telLogin.placeholder = '+7()'
            }
        }
    }
    </script>
    
    <style lang="stylus">
        .login-form
            width 100%
            h1
                font-weight 500
                line-height 21px
                margin 138px 0 49px
                font-size 28px
            p
                margin 15px 0
            input
                text-align center
        #form_phone
            width 100%!important
            color #606266
            font-size 22px
    </style>
  • Что не так с моим event.bus в vue?

    AntonBrock
    @AntonBrock Автор вопроса
    Alex, да, верно, сначала появляется первый компонент, потом, после нажатия кнопки происходит emit, только потом появляется 2 компонент, где я хочу получить значение из первого, а как верно сделать? Компоненты находятся на одном уровне
  • Как правильно сделать blur для Carrot quest в ангуляре?

    AntonBrock
    @AntonBrock Автор вопроса
    у меня нет carrotquest.d.ts

    Если на input вешать это:
    onblur="carrotquest.identify({'$email': this.phone}); console.log(carrotquest.identify({'$email':this.phone }));"


    выдает ошибка 400, плохой реквест

    После такого объявления, ниже, ошибка пропала, но в консоли выдает:
    cannot read property 'identify' of undefined
    phoneValid(e) {
        this.phone = e.target.value
        if(this.phone.length < 1) {
          return this.phone = undefined
        }
        
        var carrotquest: any;
        
        document.querySelector('#phoneFormAfterCal').addEventListener('blur', function () {
          carrotquest.identify({'$phone': this.value})
          console.log(carrotquest.identify({'$phone': this.value}))
        })
      }
  • Как правильно сделать blur для Carrot quest в ангуляре?

    AntonBrock
    @AntonBrock Автор вопроса
    Евгений Самойленко, скриптом в index.html перед закрывающим head , как сказано в доке
  • Как сделать скачивание файла через js?

    AntonBrock
    @AntonBrock
    На сколько этот вариант был кроссбраузерным? Потому что помню, что атрибус download не всеми браузерами поддерживается
  • Как добавить элемент в существующий массив?

    AntonBrock
    @AntonBrock Автор вопроса
    RAX7, тоже так делал, все также 0 итем переписывает :с
  • Как добавить элемент в существующий массив?

    AntonBrock
    @AntonBrock Автор вопроса
    RAX7,

    Эта вся функция, но нужно просто сохранить новую картинки из fetch еще в массив, т.е. сейчас у меня каждый день просто обновляет массив этот первый итем, а не добавляет к концу его
    function runOncePerDayUnsplash() {
      if (!hasOneDayPassedUnsplash()) return false;
    
      function renderGalleryItem(randomNumber) {
        let selectionItem = []
        fetch(`https://source.unsplash.com/collection/${collectionID}/${imageWidth}x${imageHeight}/?sig=${randomNumber}`)
          .then((data) => {
            localStorage.setItem('unsplashWall', data.url)
              selectionItem.push(data.url)
            })
              // selectionItem.push(data.url)
              // localStorage.setItem('selectionItem', JSON.stringify(selectionItem))
            if ('FirstOpen' in localStorage) {
              document.querySelector('#main').style.backgroundImage = 'url(' + './welcomeInstant.jpg' + ')';
            } else {
    
              if ('NopeRandomBg' in localStorage) {
                document.querySelector('#main').style.backgroundImage = 'url(' + localStorage.getItem('bgImg') + ')';
              } else {
                localStorage.bgImg = localStorage.unsplashWall;
                document.querySelector('#main').style.backgroundImage = 'url(' + localStorage.getItem('unsplashWall') + ')';
              }
        }
      }
    
      for (let i = 0; i < numItemsToGenerate; i++) {
        let randomImageIndex = Math.floor(Math.random() * numImagesAvailable);
        renderGalleryItem(randomImageIndex);
      }
    }
  • Как добавить элемент в существующий массив?

    AntonBrock
    @AntonBrock Автор вопроса
    Stalker_RED, окей, но как мне добавить уже к существуещему массиву, мне нужно сделать push в массив, чтобы получить не только 0, но дальше
  • Как добавить элемент в существующий массив?

    AntonBrock
    @AntonBrock Автор вопроса
    Если делать так:

    fetch(`https://source.unsplash.com/collection/${collectionID}/${imageWidth}x${imageHeight}/?sig=${randomNumber}`)
         let selectionItem = []
          .then((data) => {
            localStorage.setItem('unsplashWall', data.url)
              selectionItem.push(data.url)
              localStorage.setItem('selectionItem', JSON.stringify(selectionItem))
            })

    Консоль говорит [].then не является функцией
    Если делать так:
    let selectionItem = []
        fetch(`https://source.unsplash.com/collection/${collectionID}/${imageWidth}x${imageHeight}/?sig=${randomNumber}`)
          .then((data) => {
            localStorage.setItem('unsplashWall', data.url)
              selectionItem.push(data.url)
              localStorage.setItem('selectionItem', JSON.stringify(selectionItem))
            })


    Он также записывает в [0], т.е. не добавляется в массив, а перезаписывает 0
  • Правильно ли я делаю сравниваю среди множества переменных?

    AntonBrock
    @AntonBrock Автор вопроса
    Антон Швец, нужно так, чтобы рандомно выдавало из этих итемов 1 итем.
    Т.е. у них у всех null , вот я и написал рандомный true или false, чтобы потом подставилось.
    Проверкой я хочу проверить чтобы выдало 1 итем с тру, но никак не одинаковые
  • Правильно ли я делаю сравниваю среди множества переменных?

    AntonBrock
    @AntonBrock Автор вопроса
    Хорошо, я сделал как вы сказали, но проверка все равно выдает чаще всего последний итем.

    let randomBooleanItemFour = Math.random() > 0.5
            let randomBooleanItemFour_two = Math.random() > 0.5
            let randomBooleanItemFour_three = Math.random() > 0.5
            let randomBooleanItemFour_four = Math.random() > 0.5
            let randomBooleanItemFour_five = Math.random() > 0.5
    
            this.renderItemFour = randomBooleanItemFour
            this.renderItemFour_second = randomBooleanItemFour_two
            this.renderItemFour_three = randomBooleanItemFour_three
            this.renderItemFour_four = randomBooleanItemFour_four
            this.renderItemFour_five = randomBooleanItemFour_five
           
            if (randomBooleanItemFour == randomBooleanItemFour_two && randomBooleanItemFour_three &&  randomBooleanItemFour_four && randomBooleanItemFour_five ) {
                this.returnItemBoolianFour();
            }
  • Как проверить равны ли три переменные через if?

    AntonBrock
    @AntonBrock Автор вопроса
    ахахха) Спасибо за совет) Тут у меня оказывается компилятор решил своей жизнью пожить, и не отрабатывал как нужно.. перезапустил и все ок )
  • Как проверить равны ли три переменные через if?

    AntonBrock
    @AntonBrock Автор вопроса
    Я знаю про него, дело в том что так и не работает, поэтому думаю задам вопрос :D
    Может ошибка где ? (ну то что мой весь код ошибка я знаю, именно в проверке), он мне false на третий item выдает :с

    returnItemBoolian() {
    
            let booleanItemOne = [true, false]
            let randomBooleanItemOne = Math.floor(Math.random() * booleanItemOne.length);
    
            let boolean = [true, false]
            let randomBoolean = Math.floor(Math.random() * boolean.length);
    
            let booleanItemThree = [true, false]
            let randomBooleanItemThree = Math.floor(Math.random() * booleanItemThree.length);
    
            this.renderItemOne = randomBooleanItemOne
            this.renderItemOne_second = randomBoolean
            this.renderItemOne_three = randomBooleanItemThree
    
            // randomBoolean == randomBooleanItemOne ? this.returnItemBoolian() : false
           
            if (randomBoolean == randomBooleanItemOne && randomBooleanItemOne == randomBooleanItemThree) {
                this.returnItemBoolian();
            }
    
        }
  • Как проверить равны ли три переменные через if?

    AntonBrock
    @AntonBrock Автор вопроса
    Я знаю про него, дело в том что так и не работает, поэтому думаю задам вопрос :D
    Может ошибка где ? (ну то что мой весь код ошибка я знаю, именно в проверке), он мне false на третий item выдает :с

    returnItemBoolian() {
    
            let booleanItemOne = [true, false]
            let randomBooleanItemOne = Math.floor(Math.random() * booleanItemOne.length);
    
            let boolean = [true, false]
            let randomBoolean = Math.floor(Math.random() * boolean.length);
    
            let booleanItemThree = [true, false]
            let randomBooleanItemThree = Math.floor(Math.random() * booleanItemThree.length);
    
            this.renderItemOne = randomBooleanItemOne
            this.renderItemOne_second = randomBoolean
            this.renderItemOne_three = randomBooleanItemThree
    
            // randomBoolean == randomBooleanItemOne ? this.returnItemBoolian() : false
           
            if (randomBoolean == randomBooleanItemOne && randomBooleanItemOne == randomBooleanItemThree) {
                this.returnItemBoolian();
            }
    
        }
  • Как правильно указать(вызвать) Yandex Metrika в функции ангуляра?

    AntonBrock
    @AntonBrock Автор вопроса
    Так ошибку IDE не выдает, но проверить не могу, так как сразу отправляется в общую, не дает глянуть только при успешной отправки чтобы выдавало ym. Как проверю, отпишусь обязательно и спасибо за ваше время!
  • Как правильно указать(вызвать) Yandex Metrika в функции ангуляра?

    AntonBrock
    @AntonBrock Автор вопроса
    Антон Швец, скриптом в index

    <script type="text/javascript" >
        (function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
        m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
        (window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
    
        ym(xXXXXX, "init", {
            id: XXXXXXX,
            clickmap:true,
            trackLinks:true,
            accurateTrackBounce:true,
            webvisor:true
        });
      </script>
  • Как правильно указать(вызвать) Yandex Metrika в функции ангуляра?

    AntonBrock
    @AntonBrock Автор вопроса
    Артем Будин, я тоже, просто проект, где нужно эту **** сделать :D
    Cannot find name 'ym' - вот ошибка, когда как обычно делаешь. ( т.е. как вы показали)
  • Как передать файл.html в другой файл html в ангуляре?

    AntonBrock
    @AntonBrock Автор вопроса
    Антон Швец, все что мы нашли, раньше было ng-include и туда можно было передать через url template, сейчас вариант похоже создавать отдельно, вот

    @Component({
        selector: 'app-device',
        templateUrl: './device.html'
    })
    class DeviceComponent {}