Vueは書籍ショッピングカートの機能を実現

Vueは書籍ショッピングカートの機能を実現

この記事の例では、書籍ショッピングカート機能を実現するためのVueの具体的なコードを参考までに共有しています。具体的な内容は次のとおりです。

レンダリング

クリックすると購入数量を増やしたり減らしたり削除したりして合計金額が変わります

コード

<!DOCTYPE html>
<html lang="ja">
<ヘッド>
    <メタ文字セット="UTF-8">
    <meta http-equiv="X-UA-compatible" content="IE=edge">
    <meta name="viewport" content="width=デバイス幅、初期スケール=1.0">
    <title>書籍ショッピングカート</title>
    <スタイル>
        テーブル{
            境界線: 1px 実線 #e9e9e9;
            境界線の折りたたみ: 折りたたみ;
            境界線の間隔: 0;
        }
        th、td{
            パディング: 8px 16px;
            境界線: 1px 実線 #e9e9e9;
            テキスト配置: 左;
        }
        th{
            背景色: #f7f7f7;
            色: #5c6b77;
            フォントの太さ: 600;
        }
    </スタイル>
</head>
<本文>
    <div id="app" v-cloak>
        <div v-if="本の長さ">
            <テーブル>
                <頭>
                    <tr>
                        <番目></番目>
                        <th>書籍名</th>
                        <th>発行日</th>
                        <th>価格</th>
                        <th>購入数量</th>
                        <th>オペレーション</th>
                    </tr>
                </thead>
                <t本文>
                    <tr v-for="(item, index) 書籍内">
                        <td>{{インデックス+1}}</td>
                        <td>{{アイテム名}}</td>
                        <td>{{item.date}}</td>
                        <td>{{item.price | 表示価格}}</td>
                        <td>
                            <!-- ボタンが無効になっている場合は disabled が true になります -->
                            <button @click="reduce(index)" v-bind:disabled="item.count <= 1">-</button>
                            {{item.count}}
                            <button @click="増加(インデックス)">+</button>
                        </td>
                        <td><button @click="remove(index)">削除</button></td>
                    </tr>
                </tbody>
            </テーブル>
            <h2>合計金額: {{totalPrice | showPrice}}</h2>
        </div>
        <h2 v-else>ショッピングカートは空です</h2>
    </div>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <スクリプト>
        constアプリ = 新しいVue({
            el: "#app",
            データ:{
                書籍:
                    {
                        名称:「アルゴリズム入門」
                        日付: '2021-8-1',
                        価格: 85.00、
                        カウント: 1
                    },
                    {
                        題名: 『UNIXプログラミングの芸術』
                        日付: '2021-8-2',
                        価格: 69.00、
                        カウント: 1
                    },
                    {
                        名前: 「プログラミングパール」
                        日付: '2021-8-3',
                        価格: 35.00、
                        カウント: 1
                    },
                    {
                        タイトル: 「DOMプログラミングの芸術」
                        日付: '2021-8-4',
                        価格: 75.00、
                        カウント: 1
                    },
                    {
                        名前: 「Nodejs をシンプルに解説」
                        日付: '2021-8-5',
                        価格: 105.00、
                        カウント: 1
                    },
                ]、
                
            },
            方法:{
                減らす(インデックス){
                    this.books[インデックス].count--;
                },
                増加(インデックス){
                    this.books[インデックス].count++;
                },
                削除(インデックス){
                    this.books.splice(インデックス、1);

                },
            },
            計算:{
                // 計算属性に記述されたメソッドは、属性 totalPrice(){ として直接使用できます。
     //totalPrice = 0 とします。

                    // 1. 通常の for ループ // for (let i = 0; i < this.books.length; i++) {
                    // 合計価格 += this.books[i].count * this.books[i].price;
                    // }

                    // 2. よりシンプルなステップの通常の for ループ // for (let i in this.books) {
                    // 合計価格 += this.books[i].count * this.books[i].price;
                    // }

                    // 3. for(let item of this.books)
                    //for(let item of this.books){
                        // 合計価格 += アイテム数 * アイテム価格;
                    //
                    //totalPrice を返します。

     // 4. 高階関数の記述reduce
     // 変数を定義したり走査したりせずに結果を直接返します return this.books.reduce(function(pre, book){
                        pre + book.price * book.count を返します。
                    },0);
            },
            // フィルター:{
                価格を表示(価格){
                    "¥" + price.toFixed(2) を返します。
                }
            }
        })
    </スクリプト>
</本文>
</html>

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Vuejsは、完全なショッピングカートのサンプルコードを書く方法を段階的に教えてくれます
  • Vuejs ベースのショッピングカート機能の実装
  • Vueはショッピングカート機能を実装します
  • Vueはショッピングカートの小さなケースを実装します
  • Vueはショッピングモールのショッピングカート機能を実現
  • Vue はショッピングカートの合計価格計算を実現します
  • vuex で実装されたシンプルなショッピングカート機能の例
  • vue+vant-UIフレームワークは、ショッピングカートのチェックボックスの選択と選択解除機能を実現します。
  • Vue を使用してショッピングカートの放物線ボールアニメーション効果を実現する方法の詳細な説明
  • Vueでショッピングカートの詳細ページを実装する方法

<<:  マテリアルデザインで水滴アニメーションボタンを実現するための純粋なCSS

>>:  GET POSTの違い

推薦する

解決策 - BASH: /HOME/JAVA/JDK1.8.0_221/BIN/JAVA: 権限が不十分です

1) jdkファイルが保存されているフォルダパスを入力します私はここにいますusr/local/jd...

Ubuntu 18.04 のインストールで「ldlinux.c32 のロードに失敗しました」というエラーが表示され、解決手順がわかりません

序文私は Win7 を搭載した古いラップトップを持っています。古いシステムを維持しながら、同時に U...

Mac VMware Fusion CentOS7 静的 IP 構成チュートリアル図

目次CentOS7をインストールする静的IPの設定viを使用してファイルを編集するCentOS7をイ...

Tomcatにデプロイされたアプリケーションがフロントエンドページにアクセスできない問題について

最近、実践的なトレーニング プロジェクトを実行する際に ssm フレームワークを使用しました。プロジ...

フレックスレイアウトにおける画像変形の解決策の詳細な説明

フレックス レイアウトは現在よく使用されるレイアウト方法ですが、場合によっては小さな問題が発生するこ...

MySQL トリガーの基本的な使い方(作成、表示、削除など)の詳細な説明

目次1. MySQLトリガーの作成: 1. MySQLトリガー作成構文: 2. MySQL作成構文の...

MySQL レプリケーションの利点と原則を詳しく説明します

レプリケーションとは、マスター データベースの DDL および DML 操作をバイナリ ログを介して...

データベースを削除して逃げる?xtraback を使用して MySQL データベースをバックアップする方法

1. mysqldump バックアップ方法では論理バックアップが使用されます。最大の欠点は、バック...

ランダムな文字を生成する Java サンプルコード

サンプルコード: java.util.Random をインポートします。 java.util.UUI...

Tomcatのデフォルトプログラム公開パスの使用と変更についての説明

tomcat7 のデフォルトのプログラム公開パスは tomcat/webapps/ROOT/ です。...

psdカット画像をdiv+css形式に変換する

PSD から div css へのウェブページ切り取り例ステップ 1: まず、すべてのタグの内側と外...

ReactのPropsの簡単な比較

目次クラスコンポーネントのプロパティ比較浅い同等の浅い比較機能コンポーネントの簡単な比較先週面接に行...

Linuxはiftopを使用してネットワークカードのトラフィックをリアルタイムで監視します

Linux は iftop を使用してネットワーク カードのトラフィックをリアルタイムで監視します。...

MySQL で重複しない携帯電話番号テーブルをバッチ生成する方法のサンプルコード

序文多くの MySQL テスト シナリオでは、テスト用に一部のテスト データを手動で生成する必要があ...