Vue.jsはモバイル端末のショッピングカートのインターフェイスを構築します。
本文はVueを使って移動端末のショッピングカートのインターフェイスを構築する方法を紹介します。最終的に実現する機能は以下の通りです。
1. 最終的に買うものを選んでください。
2. アイテムごとに購入する数量を選択します。
3. 選択したものの総価格をリアルタイムで更新します。
HTML部分
まずHTMLの部分コードと注釈を与え,界面全体の構造を示した。
一、Vueコンポーネントの基本フォーマット
Vueコンポーネントの基本コードは以下の通りです。
1. elフィールド:elフィールドは、このコンポーネントがHTMLのどの位置で効果があるかを定義するために使用され、HTMLの中のある要素のid値に入る必要があります。ここには、HTMLの中のidがappであるということを示す菗apが伝えられています。内部はこのVueコンポーネントの役割範囲です。
2.dataフィールド:dataフィールドはVueコンポーネントのデータを定義しています。HTMLでレンダリングが可能です。本アプリケーションでは、商品の価格、名前、リンクなどの情報は、Vueコンポーネントのdataフィールド内のデータを使ってレンダリングされます。
3.filterフィールド:filterフィールドはフィルタであり、本アプリケーションでは価格などの書式設定が必要なテキストに対して、filterを使ってフィルタリングすることができます。
4.mountedフィールド:mountedフィールドは通常、ページローディングが完了すると自動的に実行され、Reactなどのフレームにも同様のメカニズムがあります。
5.methodフィールド:methodフィールドは、Vueコンポーネントの中で必要な方法を定義するために使用されます。このフィールドの内容は、しばしば投入時間が一番多い部分です。たとえば、ページの中で商品を選択したり、数量を増やすなどのロジックは、このフィールドで編集します。
以上は一つのvueコンポーネントの主要な構成部分です。各部分の機能コードの作成について簡単に紹介します。
二、データレンダリング
データレンダリング部分は、レンダリングするデータをダタに保存します。各商品の情報はアナログでcart.jsonのファイルに保存されています。データの自動ロードが実現できます。基本的な考え方は、cart.jsonのデータをロードするための方法をmethodフィールドで定義し、dataフィールドで定義されている対応する変数に格納することです。moutedフィールドでは、この方法が自動的に起動されます。これにより、ページ読み込みが完了したら自動的にデータをロードすることができます。対応するJSコードとコメントは以下の通りです。
フロントエンドHTML部分での呼び出しは、v-for命令を使用する必要があります。このコマンドはVueのデータを巡回するために使用されます。コードは以下の通りです。
次の部分は論理コードの作成を紹介します。
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。
1. 最終的に買うものを選んでください。
2. アイテムごとに購入する数量を選択します。
3. 選択したものの総価格をリアルタイムで更新します。
HTML部分
まずHTMLの部分コードと注釈を与え,界面全体の構造を示した。
<body>
<div class="checkout">
<div id="app">
<div class="container">
<div class="cart">
<div class="checkout-title">
<span> </span>
</div>
<!-- table -->
<div class="item-list-wrap">
<divclassdivclass="cart-item">
<divclassdivclass="cart-item-head">
<ul>
<li> </li>
<li> </li>
<li> </li>
<li> </li>
<li> </li>
</ul>
</div>
<ulclassulclass="cart-item-list">
<!--productList Vue data , , v-for -->
<li v-for="item inproductList">
<divclassdivclass="cart-tab-1">
<divclassdivclass="cart-item-check">
<!--Vue2.0 HTML , v-bind:, , a check , item checked -->
<!--@click v-on:click , , Vue methods selectProduct-->
<ahrefahref="javascript:void 0" class="item-check-btn"v-bind:class="{'check': item.checked}"@click="selectedProduct(item)">
<svgclasssvgclass="icon icon-ok"><usexlink:hrefusexlink:href="#icon-ok"></use></svg>
</a>
</div>
<divclassdivclass="cart-item-pic">
<imgv-bind:srcimgv-bind:src="item.productImage" alt=" ">
</div>
<divclassdivclass="cart-item-title">
<divclassdivclass="item-name">{{ item.productName }}</div>
</div>
<divclassdivclass="item-include">
<dl>
<dt> :</dt>
<ddv-forddv-for="part in item.parts"v-text="part.partsName"></dd>
</dl>
</div>
</div>
<divclassdivclass="cart-tab-2">
<!-- ,| Vue filter -->
<divclassdivclass="item-price">{{ item.productPrice |formatMoney}}</div>
</div>
<divclassdivclass="cart-tab-3">
<divclassdivclass="item-quantity">
<divclassdivclass="select-self select-self-open">
<divclassdivclass="quantity">
<!-- changeMoney() , -->
<ahrefahref="javascript:;"@click="changeMoney(item,-1)">-</a>
<inputtypeinputtype="text" :value="item.productQuantity" disabled>
<ahrefahref="javascript:;"@click="changeMoney(item,1)">+</a>
</div>
</div>
<divclassdivclass="item-stock"> </div>
</div>
</div>
<divclassdivclass="cart-tab-4">
<divclassdivclass="item-price-total">{{ item.productPrice*item.productQuantity| money(' ')}}</div>
</div>
<div class="cart-tab-5">
<divclassdivclass="cart-item-operation">
<!--delConfirm -->
<ahrefahref="javascript:void 0" class="item-edit-btn"@click="delConfirm(item)">
<svg class="iconicon-del"><use xlink:href="#icon-del"></use></svg>
</a>
</div>
</div>
</li>
</ul>
</div>
</div>
<!-- footer -->
<div class="cart-foot-wrap">
<divclassdivclass="cart-foot-l">
<divclassdivclass="item-all-check">
<ahrefahref="javascript:void 0">
<spanclassspanclass="item-check-btn" :class="{'check':checkAllFlag}"@click="checkAll(true)">
<svg class="iconicon-ok"><usexlink:hrefusexlink:href="#icon-ok"></use></svg>
</span>
<span v-show="!checkAllFlag"> </span>
</a>
</div>
<divclassdivclass="item-all-del">
<ahrefahref="javascript:void 0" class="item-del-btn"@click="checkAll(false)">
<spanv-showspanv-show="checkAllFlag"> </span>
</a>
</div>
</div>
<divclassdivclass="cart-foot-r">
<divclassdivclass="item-total">
<!--totalMoney , Vue -->
Item total: <span class="total-price">{{totalMoney| money(' ')}}</span>
</div>
<divclassdivclass="next-btn-wrap">
<ahrefahref="address.html" class="btn btn--red" style="width:200px"> </a>
</div>
</div>
</div>
</div>
</div>
<!-- md-show , delFlag , -->
<div class="md-modal modal-msg md-modal-transition"id="showModal" v-bind:class="{'md-show':delFlag}">
<div class="md-modal-inner">
<div class="md-top">
<!-- , delFlag -->
<buttonclassbuttonclass="md-close" @click="delFlag = false"> </button>
</div>
<div class="md-content">
<divclassdivclass="confirm-tips">
<pidpid="cusLanInfo"> ?</p>
</div>
<div class="btn-wrapcol-2">
<!-- yes delProduct -->
<button class="btnbtn--m" id="btnModalConfirm"@click="delProduct">Yes</button>
<button class="btnbtn--m btn--red" id="btnModalCancel"@click="delFlag=false">No</button>
</div>
</div>
</div>
</div>
<!-- , delFlag ,v-if -->
<div class="md-overlay"v-if="delFlag"></div>
</div>
</div>
</body>
対応するキーコメントはコードの中で与えられます。Vue.jsのコードを組み合わせてメインの部分を説明します。 一、Vueコンポーネントの基本フォーマット
Vueコンポーネントの基本コードは以下の通りです。
new Vue({
el:'#app',
data: {},
filters: {},
mounted: function() {},
methods: {}
});
JSコードでは、new Vueを使ってVueコンポーネントを宣言できます。Vueコンポーネントは主に以下のいくつかのフィールドを含みます。1. elフィールド:elフィールドは、このコンポーネントがHTMLのどの位置で効果があるかを定義するために使用され、HTMLの中のある要素のid値に入る必要があります。ここには、HTMLの中のidがappであるということを示す菗apが伝えられています。内部はこのVueコンポーネントの役割範囲です。
2.dataフィールド:dataフィールドはVueコンポーネントのデータを定義しています。HTMLでレンダリングが可能です。本アプリケーションでは、商品の価格、名前、リンクなどの情報は、Vueコンポーネントのdataフィールド内のデータを使ってレンダリングされます。
3.filterフィールド:filterフィールドはフィルタであり、本アプリケーションでは価格などの書式設定が必要なテキストに対して、filterを使ってフィルタリングすることができます。
4.mountedフィールド:mountedフィールドは通常、ページローディングが完了すると自動的に実行され、Reactなどのフレームにも同様のメカニズムがあります。
5.methodフィールド:methodフィールドは、Vueコンポーネントの中で必要な方法を定義するために使用されます。このフィールドの内容は、しばしば投入時間が一番多い部分です。たとえば、ページの中で商品を選択したり、数量を増やすなどのロジックは、このフィールドで編集します。
以上は一つのvueコンポーネントの主要な構成部分です。各部分の機能コードの作成について簡単に紹介します。
二、データレンダリング
データレンダリング部分は、レンダリングするデータをダタに保存します。各商品の情報はアナログでcart.jsonのファイルに保存されています。データの自動ロードが実現できます。基本的な考え方は、cart.jsonのデータをロードするための方法をmethodフィールドで定義し、dataフィールドで定義されている対応する変数に格納することです。moutedフィールドでは、この方法が自動的に起動されます。これにより、ページ読み込みが完了したら自動的にデータをロードすることができます。対応するJSコードとコメントは以下の通りです。
data: {
// json
productList: []
}
methods: {
//cartView() , Vue productList
cartView: function() {
var _this = this;
// vue-resource , Jquery AJAX, res.body
this.$http.get("data/cartData.json", {"id":123}).then(function(res) {
_this.productList =res.body.result.list;
// _this.totalMoney = res.body.result.totalMoney;
});
}
}
mounted: function() {
// $nextTick ,
this.$nextTick(function() {
this.cartView(); // this methods cartView()
})
}
このコードが完成したら、商品のデータは全部コンポーネント中の変数名がproductListのフィールドに保存されます。フロントエンドHTML部分での呼び出しは、v-for命令を使用する必要があります。このコマンドはVueのデータを巡回するために使用されます。コードは以下の通りです。
<ul class="cart-item-list">
<li v-for="item in productList">
<div class="cart-tab-1">
<div class="cart-item-check">
</div>
<div class="cart-item-pic">
<img v-bind:src="item.productImage" alt=" ">
</div>
<div class="cart-item-title">
<div class="item-name">{{ item.productName}}</div>
</div>
<div class="item-include">
<dl>
<dt> :</dt>
<dd v-for="part in item.parts"v-text="part.partsName"></dd>
</dl>
</div>
</div>
</ul>
v-for命令により、変数productList内のデータを巡回し、内部のHTMLから呼び出します。利益item.productImageは対応画像URLアドレスを取得する。item.productNameは商品名などを取得します。これにより、商品情報リストが自動的に生成されます。次の部分は論理コードの作成を紹介します。
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。