javascript - Vuejs可拖动排序列表

标签 javascript vue.js vue.draggable

我正在使用 Vue.Draggable 实现可拖动列表的插件。我正在传递一个排序的计算属性,如下所示:

data(){

  return {

   paymentMethods: [
     { name: 'stripe', Dindex: 0, state: 2 },
     { name: 'paypal', Dindex: 1 , state: 1 },
     { name: '2checkout', Dindex: 2, state: 4 },
     { name: 'cod', Dindex: 3, state: 3 }
   ],
  }
},

computed: {

  payments() {
    return _.sortBy(this.paymentMethods, 'state');
  },
}
可拖动列表:
<draggable :list="payments" class="payment-methods" tag="ul" @start="drag=true" @end="drag=false" @change="indexChanged">
   <li v-for="(method, index) in payments" :key="index">
        <!-- list data -->
   </li>
</draggable>
这里的问题是可拖动列表永远不会起作用,因为我正在强制列表排序(使用 lodash _.sortBy ),问题是我如何在可拖动列表中进行排序。

最佳答案

虽然它是一个计算值,但当您拖动它时,列表将再次排序。我认为最好的办法是在安装时对其进行排序:(所以只是最初)

data() {
  return {
    payments: []
    paymentMethods: [
        { name: 'stripe', Dindex: 0, state: 2 },
        { name: 'paypal', Dindex: 1 , state: 1 },
        { name: '2checkout', Dindex: 2, state: 4 },
        { name: 'cod', Dindex: 3, state: 3 }
    ],
  }
}
mounted() {
    payments = _.sortBy(this.paymentMethods, 'state');
}

关于javascript - Vuejs可拖动排序列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58585715/

相关文章:

javascript - 具有 unicode 字符的 Angular JS 电子邮件验证

javascript - 如何从组件内部获取 Vue 组件的实例

javascript - Vue-Draggable & Acts As List - 如何更新整个列表位置?

javascript - 如何将 css 加载到我的 react 元素中

javascript - react-native 和 react-navigation 无法将函数作为参数传递到 NavigationOptions 中的下一个屏幕

javascript - 如何在 vue 组件中重用全局 javascript 文件

ruby-on-rails - Vue.draggable 获取拖拽项和列表ID

javascript - 如何在 node.js 中搜索流中的字符串?

javascript - vue.js -- 无法通过 css 更改 svg 的样式,并且在 dom 中它应用 element.style 而不是类名