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の違い

推薦する

HTTP および HTTP コラボレーション Web サーバー アクセス フロー図

Web サーバーは、独立したドメイン名を持つ複数の Web サイトを構築できるほか、通信経路上のトラ...

Matlab による JavaScript プログラミング、重心アルゴリズムによる位置決め学習

目次Matlab セントロイドアルゴリズムMatlab はクローズドな商用ソフトウェアであり、米国政...

インタビュアーはCSSで固定アスペクト比を実現する方法を尋ねました

この質問に関連するニーズはまだないかもしれませんし、面接でこの質問をされたことがないかもしれませんが...

MySQLで全角文字と半角文字を保存する場合の違い

残念ながら、社内の IM のテスト中に MYSQL_DATA_TRUNCATED エラーが再び発生し...

dockerfile における ENTRYPOINT と CMD の組み合わせと違い

前回の記事【dockerコンテナのためのdockerfileを詳しく解説】では、dockerfile...

nodejs で worker_threads を使用して新しいスレッドを作成する方法

導入前の記事で述べたように、NodeJS には 2 種類のスレッドがあります。1 つは、ユーザー リ...

Navicat 経由で MySQL にリモート接続する方法

Navicat を使用して IP 経由で直接接続すると、次のようなさまざまなエラーが報告されます: ...

2列の水平タイムラインを実装するためのVueサンプルコード

目次1.コンポーネントtimelineH.vueを実装する2. コンポーネントの呼び出しこの記事では...

JavaScriptのループの違いについての詳細な説明

目次序文列挙可能なプロパティ反復可能なオブジェクトforEachメソッドとmapメソッドチェーン呼び...

WeChatアプレットがジグソーパズルゲームを実装

この記事では、WeChatアプレットでジグソーパズルゲームを実装するための具体的なコードを参考までに...

Chrome 73 によるフレックスレイアウトの崩れの解析と解決方法

現象プロジェクトにはネストされたフレックス構造がいくつかあります。 <スタイル> /* ...

React-Native スクリーンショットコンポーネント react-native-view-shot の紹介と使い方のまとめ

目次1. 現象2. 解決策3. 要約: 1. 現象1. 要件: 特定の表示ページをキャプチャしてアル...

Nginx ベースの Mencached キャッシュ構成の詳細な説明

導入Memcached は分散キャッシュ システムです。Memcached には認証とセキュリティ制...

MySQLクエリ制御ステートメントの詳細なグラフィック説明

mysql クエリ制御ステートメントフィールド重複排除 **キーワード: 明確** 構文: テーブル...

Linux CentOS 7.4 で mysql5.7.20 のパスワードを変更する方法

MySQL がバージョン 5.7 にアップグレードされた後、セキュリティが大幅に向上しました。しかし...