rishatss
@rishatss
Simple Developer ^)

Почему Vue.JS не видит переменную?

Есть вот такой код:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
?><!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
<!--    //////////// JS ////////////////////////-->
    <script src="assets/js/vue.js"></script>
    <script src="assets/js/jquery.js"></script>
    <script src="assets/js/tether.js"></script>
    <script src="assets/js/bootstrap.js"></script>
<!--    /////////// CSS //////////////////////////////////-->
    <link rel="stylesheet" href="assets/css/tether.css">
    <link rel="stylesheet" href="assets/css/bootstrap.css">
    <link rel="stylesheet" href="assets/css/bulma.css">
    <title>LOGIN</title>
    <style>
        .boder
        {
            background-color: #8193ff;
        }
        #main
        {
            background-color: #8193ff;
        }
        .center-form
        {
            background-color: #3b7cff;
            margin: 300px;
            border-radius: 20px;
        }
    </style>
</head>
<body class="boder" id="login">
<div id="main">
<div id="email-error" style="padding-left: 30%; padding-right: 30%; padding-top: 3px;" v-if="seen"><email-error><email-error/></div>
<form class="center-form" style="margin-top: 100px;">
    <div class="form-group">
        <label for="exampleInputEmail1" style="margin-left: 10px">{{ email }}</label>
        <input type="email" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp" v-model="emailwriting">
    </div>
    <button type="submit" class="btn btn-primary" style="margin-left: 40%; margin-bottom: 8px">{{ submit }}</button>
</form>
</div>
<script src="assets/new/js/vue-erroremail.js"></script>
<script>
    new Vue({
        el: '#main',
        data: {
            email: "Ваша почта",
            emailwriting: "Укажите email который Вам выдали.",
            submit: "Подтвердить",
            seen: true
        },
        watch: {
            emailwriting: function (val) {
                var re = new RegExp('^[\\w.+\\-]+@iuca\\.kg$');
                if(re.test(this.emailwriting)){
                    console.log('Email прошел проверку');
                }


            }
        }
    })
</script>
</body>
</html>


Сделал v-if="seen", чтобы передавать true или false туда.
Но Vue.JS говорит что не видит seen:

[Vue warn]: Property or method "seen" is not defined on the instance but referenced during render. Make sure to declare reactive data properties in the data option.
  • Вопрос задан
  • 851 просмотр
Решения вопроса 2
@AnneSmith
самая ленивая
у вас el: '#main', а seen ищется из div id="email-error"
Ответ написан
Комментировать
ernesto77
@ernesto77
php, rb, py, js, webdev
компонент email-error нигде не инициализирован, наверно надо добавить компонент email-error, примерно что то вроде этого:
Vue.component('email-error', require('./EmailError.vue'));

new Vue({
        el: '#main',
        data: {
            email: "Ваша почта",
            emailwriting: "Укажите email который Вам выдали.",
            submit: "Подтвердить",
            seen: true
        },
        watch: {
            emailwriting: function (val) {
                var re = new RegExp('^[\\w.+\\-]+@iuca\\.kg$');
                if(re.test(this.emailwriting)){
                    console.log('Email прошел проверку');
                }
            }
        },
        components: ['email-error']
    })
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы