Front-end - apprentissage angulaire : ma première directive personnalisée
仅有的幸福
仅有的幸福 2017-05-15 16:57:13
0
1
606

Au cours des deux derniers jours, j'ai lu des documents officiels et des tutoriels trouvés en ligne pour apprendre des instructions personnalisées en angulaire.

La fonction que veut réaliser la commande définie ci-dessous est très simple. Cliquez sur - pour modifier la quantité du produit

Il y a quelques problèmes avec la fonction bouton d'ajout et de réduction du nombre de produits, et elle doit être améliorée
PS : En plus de pratiquer l'utilisation des attributs de la commande lors de l'écriture de cette commande, j'ai aussi je veux savoir comment utiliser le '=' '@' '&' dans le scope
J'ai lu l'explication dans le document officiel aujourd'hui, mais je ne la comprends toujours pas, alors j'ai décidé d'écrire un exemple pour voir

Écrit dans le panier, cliquez sur - Impossible de modifier la quantité ?

Bienvenue à tous pour critiquer, corriger et se plaindre ! ! !

Ce qui suit est le code 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>

Ce qui suit est le code HTML qui présente le modèle

<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>
仅有的幸福
仅有的幸福

répondre à tous(1)
刘奇

a=b signifie que la valeur de a prend la valeur de la variable b ;
a@b signifie que la valeur de a est la chaîne 'b'
a&b signifie que a fait référence à b, généralement ; utilisé pour mettre une fonction

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal