簡單實用angular.js購物車功能

来源:http://www.cnblogs.com/dengting/archive/2016/11/21/6085845.html
-Advertisement-
Play Games

...


<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script src="http://code.angularjs.org/1.2.5/angular.min.js"></script>
		<style type="text/css">
			td,th{
				width: 150px;
				text-align: left;
			}
			table{
				width: 800px;
			}
			.num{
				width: 70px;
				text-align: center;
			}
			tr td:last-child button {
				background-color: red;
			}
			#foot button{
				background-color: red;
			}
		</style>
	</head>
	<!--ng-bind是從$scope -> view的單向綁定ng-modle是$scope <-> view的雙向綁定
		{{}} 與 ng-bind 的區別是後者在載入時用戶不會看到渲染之前的東西,前者可能會看到,所以首頁一般用後者載入數據
	-->
	<body ng-app="myApp">
		<div ng-controller="VC1">
			<table border="" cellspacing="" cellpadding="">
				<tr><th>產品編號</th><th>產品名稱</th><th>購買數量</th><th>產品單價</th><th>產品總價</th><th>操作</th></tr>
				<tr ng-repeat="x in Product" >
					<td>{{x.id}}</td>
					<td>{{x.name}}</td>
					<td>
					<button ng-click="reduce($index)">-</button>
					<input  type="text" class="num" ng-model="x.quantity" ng-change="change($index)" />
					<button ng-click="add($index)">+</button> </td>
					<td >{{x.price}}</td>
					<td>{{x.price * x.quantity}}</td>
					<td><button ng-click="remove($index)">移除</button></td></tr>
			</table>
			<div id="foot"><span>總價:</span><span ng-bind="totalQuantity()"></span><span>購買數量</span>
				<span >{{numAll()}}</span> <button ng-click="removeAll()">清空購物車</button> </div>
		</div>
	</body>
	<script type="text/javascript">
		var app = angular.module("myApp",[]);
		app.controller("VC1",function($scope){
			 $scope.Product = [{
                id: 1000,
                name: "iPhone8",
                quantity: 1,
                price: 8888
            }, {
                id: 1001,
                name: "iPhone9",
                quantity: 1,
                price: 9888
 
            }, {
                id: 1002,
                name: "iPhone 2s",
                quantity: 1,
                price: 3888
            }, {
                id: 1003,
                name: "iPhone 7P+",
                quantity: 1,
                price: 10088
            }];
            
            //減少數量
            $scope.reduce = function(index){
            	if(	$scope.Product[index].quantity > 1){
            			$scope.Product[index].quantity--;
            	}else{
            		$scope.remove(index);
            	}

            }
            
            //添加數量函數
            $scope.add = function(index){
            	$scope.Product[index].quantity++;
            }
            
            //所有商品總價函數
            $scope.totalQuantity = function(){
            	var allprice = 0
            	for(var i = 0 ; i <$scope.Product.length;i++ ){
            		allprice += $scope.Product[i].quantity *  $scope.Product[i].price;
            	}
            	return allprice;
            }
            
            //購買總數量函數
            $scope.numAll = function(){
            		var numAlls = 0
            	for(var i = 0 ; i <$scope.Product.length;i++ ){
            		numAlls += $scope.Product[i].quantity;
            	}
            	return numAlls;
            }
            
            //刪除當前商品
            $scope.remove = function(index){
            	if(confirm("確定要清空數據嗎")){
            			$scope.Product.splice(index,1)
            	}
            }
            
            //清空購物車
            $scope.removeAll = function(){
            	if(confirm("你確定套清空購物車所有商品嗎?")){
            		$scope.Product  = [];
            	}
            }
            
            //解決輸入框輸入負數時變為1
            $scope.change = function(index){
            	if ( $scope.Product[index].quantity >= 1) {
            		
            	}else{
            		$scope.Product[index].quantity = 1;
            	}
           
            }
            
            $scope.$watch('Product',function(oldvalue,newvalue){
				console.log(oldvalue);
				console.log(newvalue);
			})
         
        
        
            
		})
		

	</script>
</html>

  


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在CSS中,a標簽有4種偽類,分別為: 對其稍有瞭解的前端er都知道,4個偽類是有固定順序的(LVHA),否則很容易出現預期之外的效果。 大部分人,都會用自己的方式,對這個順序死記硬背。 熟記順序,無疑是寫樣式時最快捷的方法,牛人們的記憶方法也是五花八門。 我見過有醬嬸的:lv的包包hao,這倒是實 ...
  • 如何在Node.js中encode一個字元串呢?是否也像在PHP中使用base64_encode()一樣簡單? 在Node.js中有許多encoding字元串的方法,而不用像在JavaScript中那樣定義各種不同的全局函數。下麵是如何在Node.js中將一個普通字元串encode成Base64格式 ...
  • 下載地址http://download.csdn.net/detail/shouce_ren/9689243 百度雲下載地址 ...
  • Angularjs內置的過濾器(filter)為我們的數據信息格式化提供了比較強大的功能,比如:格式化時間,日期、格式化數字精度、語言本地化、格式化貨幣等等。但這些過濾器一般都是在VIEW中使用的,比如格式化時間/日期的VIEW視圖代碼: 那麼問題來了,如果我需要在控制器(controller)的j ...
  • 一、三個對話框 1、alert("提示信息") 彈出只帶有一個確定按鈕的對話框2、confirm("提示信息") 彈出有確定和取消按鈕的對話框3、prompt("提示信息",預設值) 可輸入內容的對話框,返回null 二、數據類型 1、var通用類型2、數據類型轉換(1)將變數轉為整數類型parse ...
  • 工廠模式:無法識別對象 function createObject(name, age) { //集中實例化的函數 var obj = new Object(); obj.name = name; obj.age = age; obj.run = function () { return this. ...
  • Ionic2使用了近似原生App的頁面導航方式,並不支持Angular2的路由。這種方式在開發本地App的時候比較方便,但如果要用來開發純Web頁面就有點問題了,這種情況下Angular2的router可以提供更靈活的配置。比如在首頁是一個Tabs頁面的情況下,如何控制用戶看到的第一項Tab?預設情 ...
  • 1、插件下載地址:http://www.chromein.com/search_livereload_1.html 2、谷歌瀏覽器啟用改插件 3、sublime 安裝livereload插件,安裝方法與其他插件一樣 4、點擊瀏覽器改小圖標邊實心 這樣就可以直接修改完html或者css保存,不需要刷新 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...