vue商品リストの追加・削除を実現する実例解説


まずコードを見に来ました。

<div id="app">
<div class="container"><form class="form-inline">
<div class="form-group"><label for="exampleInputName2">ID:</label> <input id="exampleInputName2" class="form-control" type="text" /></div>
<div class="form-group"><label for="exampleInputEmail2">Name:</label> <input class="form-control" type="text" /></div>
<button class="btn btn-primary" type="button">  </button></form>
<table class="table table-hover table-striped">
<tbody>
<tr>
<td>ID</td>
<td>    </td>
<td>    </td>
<td>  </td>
</tr>
<tr>
<td>{{item.id}}</td>
<td>{{item.pp_name}}</td>
<td>{{item.add_time | getTime()}}</td>
<td><a>  </a></td>
</tr>
</tbody>
</table>
</div>
</div>
<script type="text/javascript">// <![CDATA[
var app = new Vue({
el: '#app',
data: {
id : '',
name : '',
list : [
{id : 1, pp_name : '  ', add_time : new Date()},
{id : 2, pp_name : '  ', add_time : new Date()},
{id : 3, pp_name : '  ', add_time : new Date()},
{id : 4, pp_name : '  ', add_time : new Date()}
]
},
methods: {
add : function(){
//         
this.list.push({id : this.id, pp_name : this.name, add_time : new Date()});
this.id = this.name = ''
},

/* 
  id    

  :           id,    id    
             splice  
*/
del : function(id){
this.list.some((item,i) =>{
if(item.id === id){
this.list.splice(i,1);

//    some        true,           
return true;
}
})
}
},
//      
filters:{
getTime:function(value){
let date = new Date(value),
Y = date.getFullYear(),
m = date.getMonth() + 1,
d = date.getDate(),
h = date.getHours(),
min = date.getMinutes(),
s = date.getSeconds();
if(m<10){m = '0' +m;}
if(d<10){d = '0' +d;}
if(h<10){h = '0' +h;}
if(min<10){min = '0' +min;}
if(s<10){s = '0' +s;}

let t = Y + '-' + m + '-' + d + ' | ' + h + ':' + min + ':' + s;
return t;
}
}

})

// ]]></script>
内容補足:
vueにコンポーネントを登録し、リストの追加削除効果を実現します。
1、まずhtmlの<コード>タグの中でvue.jsを します。

<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
2、bodyでvueテンプレートを したコンテナを します。

// vue      root
<div id="root">
// input mesg    
<input v-model="mesg" />
<button @click="handle">  </button>
<ul>
<todo-item v-for='(item,index) in list' :key='index' :index='index' :content='item' @delete='deletes'></todo-item>
</ul>
</div>
3、scriptタグにtodo-intemというコンポーネントを して する

Vue.component('todo-item', {
props: ['content', 'index'],
template: '<li @click="handelClick">{{content}}</li>',
methods: {
handelClick: function() {
//  li     delete  
this.$emit('delete', this.index);
}
}
})
4、scriptタグの でvueインスタンスを する

new Vue({
el: '#root',
data() {
return {
list: [],
mesg: ''
}
},
methods: {
//      ,           
handle: function() {
if(this.mesg==''){
return;
}
this.list.push(this.mesg);
this.mesg = ''
},
deletes: function(index) {
alert(index)
this.list.splice(index, 1);
}
}
})
ここでvue リストの について した を します。 リストに を します。 の を してください。または の を き きご ください。これからもよろしくお いします。