この記事は2020年02月22日に投稿しました。
目次
リンク
1. はじめに
こんにちは、iOSのエディタアプリPWEditorの開発者の二俣です。
今回は業務で使用しているVue.jsでリストに項目を追加する方法についてです。
2. Vue.jsでリストに項目を追加する
Vue.jsでリストに項目を追加する方法ですが、次のような実装になります。
実装例
<!DOCTYPE html> <body lang="ja"> <head> <meta charset="utf-8"> <title>Sample</title> </head> <body> <!-- 'app'のタグはVue.jsによって操作されます。 --> <div id="app"> <!-- --> <ul> <!-- 果物を新しく追加します。 --> 果物名<input v-model="name"> <button v-on:click="addFruit">果物追加</button> <!-- リストで表示します。 --> <li v-for="fruit in list" v-bind:key="fruit.id"> ID:{{ fruit.id }} {{ fruit.name }} 価格:{{ fruit.price }} </li> </ul> </div> <!-- Vue.jsを使用します。 --> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> <script src="vue.js"></script> <!-- Vue.jsで操作する内容です。 --> <script> Vue.config.productionTip = false var app = new Vue({ // divタグの'app'内を操作対象とします。 el: '#app', data: { // 果物名入力の初期値 name: 'グレープ', // リストで初期表示するデータを設定します。 list: [ { id: 1001, name: 'リンゴ', price: 100 }, { id: 1002, name: 'バナナ', price: 200 }, { id: 1003, name: 'オレンジ', price: 300 }, ] }, methods: { // 果物追加ボタンが押下された時に呼び出されます。 addFruit: function() { // reduceメソッドでlistの隣り合う2つの配列要素に対して、 // 左から右へ第一引数のコールバック関数を実行します。 // 引数のコールバック関数の第一引数accumulatorには // 第二引数の初期値または1つ前に実行された結果の値が入ります。 // currentValueに現在の配列の要素が入ります。 var max = this.list.reduce(function(accumulator, currentValue) { // ひとつ前の値が現在値より大きい場合はひとつ前の値、 // そうでない場合現在の値を返却します。 return accumulator > currentValue.id ? accumulator : currentValue.id }, 0) // 新しい項目のIDと価格を算出します。 var id = max + 1 var price = (id - 1000) * 100 // 新しい項目を追加します。 this.list.push({ id: id, name: this.name, price: price }) } } }) </script> </body> </html>
3. おわりに
少しプログラムらしくなってきました。
reduse関数や、コールバック関数の書き方など、いろいろ知らないことが出てきて少し理解に時間がかかりました。
リンク
紹介している一部の記事のコードはGitlabで公開しています。
興味のある方は覗いてみてください。
私が勤務しているニューラルでは、主に組み込み系ソフトの開発を行っております。
弊社製品のハイブリッドOS Bi-OSは高い技術力を評価されており、特に制御系や通信系を得意としています。
私自身はiOSモバイルアプリやウィンドウズアプリを得意としております。
ソフトウェア開発に関して相談などございましたら、お気軽にご連絡ください。
また一緒に働きたい技術者の方も随時募集中です。
興味がありましたらご連絡ください。
EMAIL : info-nr@newral.co.jp / m-futamata@newral.co.jp
TEL : 042-523-3663
FAX : 042-540-1688