「Vue.Draggable」の並び順をブラウザに保存する方法

2019年10月4日

「Vue.Draggable」の並び順をブラウザに保存する方法

はじめに

以前から「Vue.Draggable」の並び順をブラウザに保存したいなあと思っていました。
先日「vue-ls」というブラザストレージを操作するライブラリの記事を書いた際に、勢いで「Vue.Draggable」と組み合わせたシステムを作成しました。

その後記事にすることも無く放置していたので、反省して記事にしました。

「Vue.Draggable」の並び順をブラウザに保存する方法

導入方法

必要なライブラリ

 

それぞれ使い方をまとめた記事もあるので、初見の方は先にそちらをご確認ください。

参考Vue.jsでドラッグ&ドロップするなら「Vue.Draggable」がおすすめ

Vue.Draggableは、Vue.js製のドラッグ&ドロップコンポートネントライブラリです。
現存するVue.js製のドラッグ&ドロップライブラリとしては、最大の人気を誇ります。
コンパイルを必要としないUMD用のJSファイルが用意されているので、jQueryからの切り替えも容易に行う事が可能です。
単純にドラッグ&ドロップの機能が欲しければ、このライブラリを選んでおけば問題無いはずです。
主な使用用途の並び順を変更するのはもちろん、複数のエリアを移動することが可能です。
さらにスマホにも対応しており、タッチイベントによる移動も可能となっています。
基本的な使い方、ちょっとした応用などコピペで1分のサンプルを公開しています。

続きを見る

ローカルストレージの操作を「vue-ls」で行う
参考ブラウザストレージの操作を「vue-ls」で行う

vue-lsは、ローカルストレージ、セッションストレージ、メモリストレージを操作するためのVueライブラリです。簡単に実装できるコピペと触って体感できるサンプルを掲載しています。

続きを見る

 

CDN

Vue.Draggable」と「vue-ls」の2つのライブラリを呼び出します。

<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.6.10/vue.min.js"></script>
<script src="https://unpkg.com/vue-ls"></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.20.0/vuedraggable.umd.min.js"></script>

JS

リストをドラッグするとwatchが反応して、ブラウザストレージにデータを保存します。

const Storage = window.VueStorage;
Vue.use(Storage);

let app = new Vue({
  el: '#app',
  data: {
    items:[]
  },
  beforeMount: function(){
    if(Vue.ls.get('lsValue')){
      // ブラウザストレージデータがある場合
      this.items =  JSON.parse(Vue.ls.get('lsValue'));
    } else {
      this.items =  [
        {no:1, name:'キャベツ', categoryNo:'1'},
        {no:2, name:'ステーキ', categoryNo:'2'},
        {no:3, name:'リンゴ', categoryNo:'3'}
      ];
    }
  },
  methods:{
    doReload: function(){
      // ページのリロード
      location.reload();
    },
    doSessionClear: function(){
      // ブラウザストレージを削除する
      if(confirm('セッションを削除します')){
        Vue.ls.clear();
      }
    }
  },
  computed:{
    getItems: {
      get: function(){
        return this.items;
      },
      set: function(value) {
        this.items = value;
      }
    }
  },
  watch: {
    items: function(value){
      //itemsが更新される度にローカルストレージを更新
      Vue.ls.set('lsValue', JSON.stringify(value), 60 * 60 * 1000);
    }
  }
});

HTML

<div id="app">
  <p>
      <button @click="doReload">ページリロード</button>
      <button @click="doSessionClear">セッションを削除</button>
  </p>
  <draggable tag="ul" v-model="items">
    <li v-for="item, index in getItems" :key="item.no">{{item.name}}-(No.{{item.no}})</li>
  </draggable>
</div>

 

サンプル

>>専用ページで確認する

 

さいごに

「Vue.Draggable」の並び順をブラウザに保存する方法でした。

 

今日はこの辺でー

 

  • この記事を書いた人

カバノキ

印刷会社のWEB部隊に所属してます。 WEB制作に携わってから、もう時期10年になります。 普段の業務では、PHPをメインにサーバーサイドの言語を扱っています。 最近のお気に入りはJavascriptです。 Vue.jsを狂喜乱舞しながら、社内に布教中です。

-vue.js
-, , ,