Крч, меня не особо поняли(написал я вроде все ясно), но решил сам.
Проблема в том, что при
v-bind:somecode
в вашем представлении(если вы в фреймворке работает) или обычном index.php где у вас разметка при написании названия функции со скобками, вот так
v-bind:ale=al()
ваш код выполнится сразу по заходу на страницу и выполнится несколько раз, если он выполняется в v-for цикле.
Исправить можно просто убрав () скобки в привязке метода и тогда все будет хорошо.
Если же вам нужно будет передать параметры данной функции, то передать их нужно будет уже в коде компонента в js файле(там кавычки писать можно и передавать параметры тоже).
Вот мой конечный код:
Код из файла где будет ваша разметка
<div id = 'app'>
<app-com v-for = 'user in users' :user = 'user' :ale="al"></app-com>
</div>
И сам JS:
Vue.component('app-com', {
props: ['user', 'ale'],
template: '<li>Имя: {{user.name}}, возраст: {{user.age}} ' +
'<button v-on:click="ale(user.name)">Редактировать</button></li>',
});
let app = new Vue({
el: '#app',
data: {
users: [
{name: 'Артем', age: 20},
{name: 'Андрей', age: 22},
],
postFontSize: 1,
},
methods: {
al: function(value) {alert(value)},
},
});