搜尋

首頁  >  問答  >  主體

前端 - angular學習:我的第一個自訂指令

最近兩天看了下官方的文檔,和網路上找到的教程,來學習angular裡的自訂指令。

下面定義的指令想實現的功能很簡單,點選 + - 能夠改變商品的數量

增加減少商品數量按鈕功能有些問題,還需要完善
PS:寫這個指令除了想練習指令的屬性的運用,更想知道scope中的'=' '@' '&'怎麼使用
今天看了下官方文件的講解,還是不怎麼理解,所以決定寫個例子看看

寫的購物車,點選 + - 不能改變數量?

歡迎大家批評指正吐槽! ! !

下面是index.html 程式碼

<!DOCTYPE html>
<html ng-app="myApp">
  <head >
    <meta charset="utf-8">
    <title>angular directive tab选项卡</title>
    <link rel="stylesheet" href="http://cdn.bootcss.com/bootstrap/3.3.5/css/bootstrap.min.css" type="text/css">
  </head>
  <body>
    <shop-cart></shop-cart>
    <script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script>
    <script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
    <script src="http://cdn.bootcss.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
    <script type="text/javascript">
      angular.module('myApp',[])
      .controller('myCtrl',['$scope',function($scope){
       $scope.datas = [
         {name:'花生',price:14,number:1,addBtn:'+',reduceBtn:'-'},
         {name:'牛奶',price:25,number:1,addBtn:'+',reduceBtn:'-'},
         {name:'蛋糕',price:25,number:1,addBtn:'+',reduceBtn:'-'}
       ];
       }])
      .directive('shopCart',function() {
        return {
          restrict:'EA',
          scope:{
            onAdd:'&',
            onReduce:'&'
          },
          templateUrl:'shop-cart.html',
          controller: 'myCtrl',
          link: function(scope,element,attr) {
            scope.onAdd = function(num,index){
              num =scope.datas[index].number  + 1
              scope.datas[index].number = num;

            };
            scope.onReduce = function(num,index){
              if(num > 0) {
                num =scope.datas[index].number - 1
                scope.datas[index].number = num;
              }
            };
             console.log(scope);
          }
        }
      });
    </script>
  </body>
</html>

下面是引入模板的html

<table class="table table-striped" ng-controller="myCtrl">
  <thead>
    <tr>
      <th>商品名称</th>
      <th>单价</th>
      <th>商品数量</th>
      <th>增加商品数量</th>
      <th>减少商品数量  </th>
    </tr>
  </thead>
  <tbody>
    <tr ng-repeat="data in datas">
      <td>{{data.name}}</td>
      <td>{{data.price}}</td>
      <td ng-model="data.number">{{data.number}}</td>
      <td><a ng-click="onAdd(data.number,$index)">{{data.addBtn}}</a></td>
      <td><a ng-click="onReduce(data.number,$index)">{{data.reduceBtn}}</a></td></td>
    </tr>
  </tbody>
</table>
仅有的幸福仅有的幸福2790 天前611

全部回覆(1)我來回復

  • 怪我咯

    怪我咯2017-05-15 16:59:13

    a=b 表示 a 的值取 變數 b 的值;
    a@b 表示 a 的值是 'b' 這個字串;
    a&b 表示 a 引用 b,一般用來放一個函數

    回覆
    0
  • 取消回覆