Форум программистов, компьютерный форум, киберфорум
JavaScript: Vue.js
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/21: Рейтинг темы: голосов - 21, средняя оценка - 4.81
7 / 0 / 1
Регистрация: 16.10.2015
Сообщений: 64
1

VueJS. Не срабатывает событие v-on:click

01.02.2018, 15:31. Показов 3880. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Например есть такой код:

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
Vue.component('sub-wrapper', {
    template: '<div class="sub_wrapper"><slot></slot></div>',
    data: function () {
      return {
        width: 600,
        height: '',
      }
    },
    computed: {
      getWidth: function () {
        alert(this.width + 'px')
      }
    }
  }
);
 
Vue.component('my-template-canvas', {
  template: '<v-stage ref="stage" :config="configKonva">\n' +
'                <v-layer ref="layer">\n' +
'                  <v-rect ref="zzz" :config="configCircle2"></v-rect>\n' +
'                </v-layer>\n' +
'              </v-stage>',
  
  data: function () {
    return {
      configKonva: {
        width: 600,
        height: 600,
        stroke:'gray'
      },
      configCircle2: {
        x: 50,
        y: 50,
        width: 260,
        height: 160,
        fill: "gray",
        stroke: "#2a1725",
        strokeWidth: 2
      },
    }
  }
});
 
let root = new Vue({
  el: '.wrapper'
});
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<!DOCTYPE html>
<html>
<head>
    <meta name="keywords" content=""/>
    <meta name="description" content=""/>
    <meta http-equiv="Content-type" content="text/html; charset=utf-8">
    <title>MK Trading</title>
    <link href="style/style.css" type="text/css" rel="stylesheet">
 
 
</head>
 
<body>
 
      <div class="wrapper">
 
          <sub-wrapper @click="getWidth()">
              <my-template-canvas></my-template-canvas>
          </sub-wrapper>
 
      </div>
      <!--    wrapper end  -->
 
    <script src="js/vue.js"></script>
    <script src='js/konva.js'></script>
    <script src='js/vue-konva.min.js'></script>
    <script src="js/script.js"></script>
</body>
</html>

CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
div, span, a, ul, li, dl, dt, dd, fieldset, form, label, button, input, h1, h2, h3, h4, h5, h6, strong, p, br, i, figure, figcaption {
    margin: 0;
    padding: 0;
    border: 0 none;
}
 
:focus {
    border: 0 none;
}
 
button, a:hover, label:hover {
    cursor: pointer;
}
 
li {
    list-style: none outside none;
}
 
img {
    border: medium none;
}
 
a:active, a:focus, img, input, textarea {
    outline: none;
}
 
a:active {
    background-color: transparent;
}
 
textarea {
    resize: none;
    overflow: auto;
}
 
th, td {
    margin: 0;
    padding: 0;
}
 
table {
    border-collapse: collapse;
    border-spacing: 0;
}
 
body {
    margin: 0;
    background-color: #fff;
}
 
.wrapper {
    margin: 0 auto;
    width: 100%;
    height: 100%;
}
.wrapper .sub_wrapper{
    margin: 0 auto;
    width: 100%;
    height: 100%;
}
.konvajs-content{
    width: 100% ! important;
}
canvas{
    background-color: #c0c0c0 ! important;
}

В данном примере еще подключена либа VueConva - но суть не в ней - вопрос следующий:
Почему не срабатывает алерт при нажатии на блок <subwrapper> ?
Интересно что алерт срабатывает если в фаербаге(для vue) кликать по этому елементу непосредственно в дом дереве. )
VueJS. Не срабатывает событие v-on:click
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.02.2018, 15:31
Ответы с готовыми решениями:

VueJS. Как включить событие следить за координатами мышки
хочу сделать drag элемент, создал div блок &lt;div @mousedown=&quot;mouseDown&quot; style=&quot;width:4px;...

Не срабатывает событие Click.
Здравствуйте! Кому не лень посмотрите пожалуйста код плеера... и может подскажете почему не...

Не срабатывает событие click
&lt;div id=&quot;panel&quot;&gt; &lt;div id=&quot;panel-content&quot; class=&quot;info-map-panel info-map-panel-visible&quot;&gt; ...

Событие Click не срабатывает у контрола LinkButton в GridView
привет всем! тут такая проблема! у меня есть gridview, несколько полей для отображения данных, и...

2
the hardway first
Эксперт JS
2461 / 1836 / 906
Регистрация: 05.06.2015
Сообщений: 3,603
02.02.2018, 10:26 2
computed - это вычисляемые свойства, они не предназначены для использования как функций. Плюс в вашем коде функция, используемая для вычисления свойства getWidth, не возвращает никаких значений.

Добавлено через 15 минут
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="Content-type" content="text/html; charset=utf-8">
  <title>MK Trading</title>
  <link href="style/style.css" type="text/css" rel="stylesheet">
</head>
<body>
  <div class="wrapper">
    <sub-wrapper>
      <my-template-canvas></my-template-canvas>
    </sub-wrapper>
  </div>
 
  <script id="sub-wrapper" type="text/x-template">
    <div class="sub_wrapper" @click="clickHandler">
      <slot></slot>
    </div>
  </script>
 
  <script id="my-template-canvas" type="text/x-template">
    <v-stage ref="stage" :config="configKonva">
      <v-layer ref="layer">
        <v-rect ref="zzz" :config="configCircle2"></v-rect>
      </v-layer>
    </v-stage>
  </script>
 
  <script src="https://unpkg.com/vue"></script>
  <script src='https://unpkg.com/konva'></script>
  <script src='https://unpkg.com/vue-konva'></script>
  <script src="js/script.js"></script>
</body>
</html>
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
const SubWrapper = {
  template: '#sub-wrapper',
  data () {
    return {
      width: 600,
      height: '',
    }
  },
  methods: {
    clickHandler () {
      alert(this.getWidth);
    }
  },
  computed: {
    getWidth () {
      return this.width + 'px';
    }
  }
};
 
const MyTemplateCanvas = {
  template: '#my-template-canvas',
  data () {
    return {
      configKonva: {
        width: 600,
        height: 600,
        stroke:'gray'
      },
      configCircle2: {
        x: 50,
        y: 50,
        width: 260,
        height: 160,
        fill: "gray",
        stroke: "#2a1725",
        strokeWidth: 2
      }
    }
  }
};
 
Vue.use('VueKonva');
 
const root = new Vue({
  el: '.wrapper',
  components: {
    SubWrapper,
    MyTemplateCanvas
  }
});
1
7 / 0 / 1
Регистрация: 16.10.2015
Сообщений: 64
03.02.2018, 12:53  [ТС] 3
Цитата Сообщение от j2FunOnly Посмотреть сообщение
Плюс в вашем коде функция, используемая для вычисления свойства getWidth, не возвращает никаких значений.
Вот к стати на счет возврата значений я пока не совсем понимаю - почему происходит такая реакция?
Допустим вот еще пример - тестирую метод 'watch':

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
const SubWrapper = {
  template: '#sub-wrapper',
  data: function () {
    return {
      newWidth2: 0,
    }
  },
  methods: {
    clickHandler () {
      alert([this.newWidth, this.newWidth2]);
    }
  },
  computed: {
    newWidth: function() {
      return this.$el.clientWidth;
    }
  },
  watch: {
    newWidth2: function() {
      this.$el.clientWidth;
    }
  }
};
 
const MyTemplateCanvas = {
  template: '#my-template-canvas',
  data () {
    return {
      configKonva: {
        width: 600,
        height: 600,
        stroke:'gray'
      },
      configCircle2: {
        x: 50,
        y: 50,
        width: 260,
        height: 160,
        fill: "gray",
        stroke: "#2a1725",
        strokeWidth: 2
      }
    }
  }
};
 
Vue.use('VueKonva');
 
const root = new Vue({
  el: '.wrapper',
  components: {
    SubWrapper,
    MyTemplateCanvas
  }
});
Что я только уже не пробовал прописывать внутри него(на протяжении 5-ти часов)
но он все время не выдает никаких результатов - не подхватывает значение.
Вопрос:
Почему это происходит - что я упускаю из виду?
(гугл никакой(ни буржуйский не наш) не помагет - поскольку все примеры которые находил на форумах структурно очень отличаются.)

P.S. В данном случае я просто хочу отслеживать(динамически в зависимости от ширины браузера) значение ширины конкретного блока.

Добавлено через 19 часов 26 минут
Вопрос решен.
Как оказалось во время моих предыдущих попыток решить задачу - ответы найденные мною оказались верными.
Просто фаербаг вуе не обновляет значение динамически(по крайней мере в моем случае)
Необходимо щелкнуть по другому компоненту и вернутся опять на интересующий - что бы данные обновились в фаербаге.
0
03.02.2018, 12:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.02.2018, 12:53
Помогаю со студенческими работами здесь

Groupbox.BackColor=Transparent, не срабатывает событие click button
В Groupbox есть кнопка, заметил такую вещь - если его цвет поставить в прозрачный, то не...

Не срабатывает событие "click" после события "blur"
Здравствуйте! Например если фокус будет в текстовом поле и нажать на кнопку произойдет событие...

Как обработать событие click и событие нажития стрелки?
Допустим есть кнопка влево-вправо для горизонтального листания товаров. Как нужно кроссбраузерно...

Не срабатывает .click()
Не срабатывает код, помогите-спасите &lt;input type=&quot;button&quot; id=&quot;my_button&quot; value=&quot;Кнопка&quot;&gt; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru