【发布时间】:2021-06-12 10:41:12
【问题描述】:
我有一个可排序的列表,我想在其中完成两件事:
- 使用 +/- 符号向此列表添加/删除 LI 元素。
- 可排序列表有一个带有数据的文本区域 - 当我添加删除 LI 项时,我很难将其存储在数据属性中。例如,当我重新加载页面时,我希望我的新 LI 项与新数据项一起可见。
非常感谢任何方向。
HTML
<div id="app" class="container ">
<ul ref="list" class="list" v-sortable="{animation: 250, onUpdate: work}">
<li v-for="item in orderedItems" :_id="item.id" :order="item.order">
|||
<textarea row="5" v-model="item.text"></textarea>
</li>
</ul>
<pre>{{ $data }}
</div>
JS
Vue.directive('sortable', {
// When the bound element is inserted into the DOM...
inserted: function (el, binding) {
Sortable.create(el, binding.value || {})
}
})
new Vue({
el: '#app',
data: {
items: [
{id: 1, text: 'AAA', order: 2},
{id: 2, text: 'BBB', order: 5},
{id: 3, text: 'CCC', order: 1},
{id: 4, text: 'DDD', order: 4},
{id: 5, text: 'EEE', order: 3},
]
},
created: function()
{
this.orderedItems = _.orderBy(this.items, 'order')
},
methods: {
work: function(event)
{
var vm = this
var els = vm.$refs.list.children
for (var i=0; i < els.length; i++)
{
var id = els[i].getAttribute('_id')
vm.items.map(function(item)
{
if (item.id == id)
{
item.order = i+1
}
})
//console.log(vm.items[i].order)
}
}
}
})
【问题讨论】:
标签: vue.js vue-component vuetify.js