JavaScript - Componentes con eventos Vue.js

 
Vista:
Imágen de perfil de Camila
Val: 3
Ha disminuido su posición en 18 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

Componentes con eventos Vue.js

Publicado por Camila (2 intervenciones) el 17/11/2018 21:56:50
Hola, bueno queria resolver una duda acerca de los componentes js,estoy haciendo una tarea
en la que debo mediantes inputs guardar un objeto que se envia a una tabla dinamicamente,eso ya esta hecho,
al agregar el objeto se agregan dos botones en la tabla que son eliminar y editar, estos dos los hice con
componentes Vue, pero al agregarle el evento v-on:click a los componentes, no reconoce la funcion eliminar() y editar() que estan
en el modelo, por lo que no puedo eliminar ni editar, se que en el momento en que les agrego ese evento
surge el error, agredeceria una respuesta,gracias .



WhatsApp-Image-2018-11-17-at-21.40.24

ese es el mensaje al presionar el boton eliminar.

[Vue warn]: Property or method "eliminar" is not defined on the instance but referenced during render. Make sure that this property is reactive, either in the data option, or for class-based components, by initializing the property. See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.

found in

---> <BtnEliminar>
<Root>
vue.js:597:7
TypeError: eliminar is not a function[Aprender más]


WhatsApp-Image-2018-11-17-at-21.43.01

aqui el codigo


WhatsApp-Image-2018-11-17-at-21.45.48

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Vue.component('btn-editar', {
	props: ['id'],
	template :
 
 
	'<button type="button" v-on:click="editar(id)">modificar</button>',
 
});
 
Vue.component('btn-eliminar',{
	props : ['id'],
	template :
	'<button type="button" class="btn btn-success" v-on:click="eliminar(id)">eliminar</button>'
 
});
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
var contador=0;
var modificacion=0;
 new Vue({
 
	el : '#app',
 
	data : {
 
		lista : [
 
 
		],
 
		nombre : '',
		descripcion : '',
		precio : '',
		id : '',
	},
 
	methods : {
			agregarProducto : function(){
				this.id=contador;
 
				if(this.nombre!="" && this.descripcion!="" && this.precio!="" ){
					this.lista.push({id:this.id, nombre:this.nombre, descripcion:this.descripcion, precio:this.precio,
					})
					contador++;
				this.nombre="";
				this.descripcion="";
				this.precio="";
				//this.id="";
				}
				else{
					alert ("ingrese todos los datos!");
				}
 
 
			},
 
			editar : function(index){
 
				this.nombre=this.lista[index].nombre;
				this.descripcion=this.lista[index].descripcion;
				this.precio=this.precio[index].precio;
 
				modificacion=index;
			},
 
			eliminar : function(index){
 
				this.lista.splice(index, 1);
			},
 
			modificar : function(){
 
				this.lista[modificacion].nombre=this.nombre;
				this.lista[modificacion].descripcion=this.descripcion;
				this.lista[modificacion].precio=this.precio;
 
			},
 
	}
 
});

y este es el html(que deberia estar todo correcto pero por cualquier cosa)

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
67
68
69
70
71
72
73
74
75
76
77
78
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>vue</title>
		<meta name="viewport" content="width=device-width, user-scalable=no,
		 initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
	 	<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.css">
		<link rel="stylesheet" href="estilo.css">
 
 
</head>
<body>
	<div id="app">
			<div class="container">
				<div class="row justify-content-center ">
					<div class="col-md-6 col-xs-12 border">
						<h2>Agregar Producto</h2>
						<form action="">
							<label for="nombre" >Nombre:</label>
							<input type="text" name="nombre" class="form-control" v-model="nombre" >
							<label for="descripcion">Descripcion:</label>
							<input type="text" class="form-control" name="descripcion" v-model="descripcion">
							<label for="precio">Precio:</label>
							<input type="number" class="form-control" name="precio" v-model="precio">
						</br>
							<input type="button" value="guardar"
							class="btn btn-success"
							 v-on:click="agregarProducto">
 
							 <input type="button" value="modificar"
							class="btn btn-success"
							 v-on:click="modificar">
 
						</form>
					</div>
				</div>
 
				<div class="row">
					<div class="col-md-12">
						<h2>Lista de Productos</h2>
						<table class="table">
							<tr>
								<th>Nombre</th>
								<th>Descripcion</th>
								<th>Precio</th>
								<th>Editar</th>
								<th>Eliminar</th>
							</tr>
							<tr v-for="producto in lista">
								<td v-text="producto.nombre"></td>
								<td v-text="producto.descripcion"></td>
								<td v-text="producto.precio"></td>
								<td>
									<btn-editar>
									</btn-editar>
								</td>
 
								<td>
									<btn-eliminar>
									</btn-eliminar>
								</td>
							</tr>
						</table>
					</div>
				</div>
			</div>
 
	</div>
	<pre></pre>
 
	<script src="https://unpkg.com/vue@2.5.17/dist/vue.js"></script>
	<script src="http://code.jquery.com/jquery-latest.js"></script>
	<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.js"></script>
	<script src="codigo.js"></script>
 
</body>
</html>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Camila
Val: 3
Ha disminuido su posición en 18 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

Componentes con eventos Vue.js

Publicado por Camila (2 intervenciones) el 18/11/2018 02:20:55
al final lo hice de esta manera:
WhatsApp-Image-2018-11-18-at-02.16.47
no use componentes,pero aunque funciones,me quedo la duda de como se haria con componentes con eventos.
aun asi espero que sirva de ayuda la solucion que le di.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Componentes con eventos Vue.js

Publicado por Ricardo Moreno (1 intervención) el 25/09/2019 18:59:42
Mueve tus métodos de editar y eliminar a tus componentes respectivamente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar