Vue.Draggable add
by kabanoki
HTML
<ul id="app">
<button v-on:click="doAdd">追加</button>
<draggable>
<li v-for="item, index in myList" :key="item.no">{{item.name}}-(No.{{item.no}})</li>
</draggable>
</ul>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/Sortable.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Vue.Draggable/2.23.2/vuedraggable.umd.min.js"></script>
CSS
#app {
padding : 15px;
}
li {
cursor:pointer;
padding: 10px;
border: solid #ddd 1px;
}
Vue
new Vue({
el: "#app",
data: {
items:[
{no:1, name:'キャベツ', categoryNo:'1'},
{no:2, name:'ステーキ', categoryNo:'2'},
{no:3, name:'リンゴ', categoryNo:'3'}
],
newNo: 4
},
computed: {
myList: function(){
return this.items;
}
},
methods: {
doAdd:function(){
var self = this;
var no = 0;
if(self.items.concat().length > 0){
no = Math.max.apply(null,self.items.concat().map(function(item){return item.no;})) +1;
self.newNo = self.newNo < no ? no:self.newNo;
}
this.items.push(
{
no: this.newNo,
name:'追加リスト'+ this.newNo,
categoryNo:'5'
}
);
},
}
});