我有一个简单的应用程序,它按数组中的一个列出“汽车”。当用户点击按钮时,会显示数组中的下一辆车。

Controller :

  var parking = angular.module("parking", []); 
  // Registering the parkingCtrl to the parking module 
  parking.controller("parkingCtrl", function ($scope) { 
    // Binding the car’s array to the scope 
    $scope.cars = [ 
      {plate: '6MBV006'},  
      {plate: '5BBM299'},  
      {plate: '5AOJ230'} 
    ];      
    $scope.idx = 0; 
    $scope.next = function(){   
      $scope.idx = $scope.idx+1; 
      if ($scope.idx>=$scope.cars.length) $scope.idx = 0; 
    } 
  }); 

“ View ”:

    <tr ng-repeat="(i,car) in cars" ng-show="i==idx" > 
      <!-- Showing the car’s plate --> 
      <td>{{car.plate}}</td> 
    </tr> 
<button ng-click="next()">next</button> 

我怎样才能以这种方式在单个页面上显示多个不同的汽车阵列,每个阵列都有自己的控件(在这种情况下,唯一的控件是“魔术”按钮)?

UPD:当然,我可以只创建一个必需的 ng-apps,每个都有自己的 Controller 副本(“parkingCtrl1”、“parkingCtrl2”...“parkingCtrl10”)。但我想这不是最好的方法:)

请您参考如下方法:

好的,所以我会为此构建指令:

(function () { 
    'use strict'; 
 
    /** 
     * @ngdoc directive 
     * @description 
     * 
     */ 
    angular 
            .module('yourModule') 
            .directive('cars', cars); 
 
    cars.$inject = ['']; 
 
    function cars() { 
        return { 
            restrict: 'E', 
            scope: { 
                dataset: '=' 
            }, 
            controller: function ($scope) { 
                $scope.next = function () { 
 
                }; 
            }, 
            template: '<div>\n    <tr ng-repeat="(i,car) in dataset" ng-show="i==idx" >\n        <!-- Showing the car’s plate -->\n        <td>{{car.plate}}</td>\n        <td><button ng-click="next()">next</button></td>\n    </tr>\n    \n</div>' 
        }; 
    } 
}()); 

Controller :

(function() { 
    'use strict'; 
 
    angular 
            .module('yourModule') 
            .controller('carsCtrl', carsCtrl); 
 
    carsCtrl.$inject = ['$scope']; 
 
    function carsCtrl($scope) { 
 
        $scope.yourCarArray = [ 
            {plate: '6MBV006'}, 
            {plate: '5BBM299'}, 
            {plate: '5AOJ230'} 
        ]; 
        $scope.yourCarArray2 = [ 
            {plate: '6MBV006'}, 
            {plate: '5BBM299'}, 
            {plate: '5AOJ230'} 
        ]; 
        $scope.yourCarArray3 = [ 
            {plate: '6MBV006'}, 
            {plate: '5BBM299'}, 
            {plate: '5AOJ230'} 
        ]; 
        $scope.yourCarArray4 = [ 
            {plate: '6MBV006'}, 
            {plate: '5BBM299'}, 
            {plate: '5AOJ230'} 
        ]; 
        $scope.yourCarArray5 = [ 
            {plate: '6MBV006'}, 
            {plate: '5BBM299'}, 
            {plate: '5AOJ230'} 
        ]; 
 
    } 
 
})(); 

然后在您的 html 文件中放入此指令:

<cars dataset="yourCarArray"></cars> 

因为它是一个指令,所以您可以多次重复使用它,例如:

<cars dataset="yourCarArray2"></cars> 
<cars dataset="yourCarArray3"></cars> 
<cars dataset="yourCarArray4"></cars> 
<cars dataset="yourCarArray5"></cars> 


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!