如何在angularJS中跟踪数组索引?

时间:2015-09-17 09:17:23

标签: javascript jquery arrays json angularjs

Angularjs很新。所以我有一些JSON文件,我正在阅读我的网页,其中包含汽车对象和数组。我要做的是按下“按钮”,提醒我注意该按钮的特定数据。

ng-repeat正在运行8次,这是数组的长度,但是在angularJs中我不知道如何在每次ng-repeat在我的按钮功能中传递时基本存储数组索引。

这是我的.html的片段:

    <div class="carTable table-responsive text-center" ng-controller="ButtonController" >
    <table class="table specTable">
        <thead>
            <tr>
                <th>Make</th>
                <th>Model</th>
                <th>Year</th>
                <th>Color</th>
                <th>Milage</th>
                <th>Doors</th>
                <th class="reserve">Horsepower</th>
                <th>Price</th>
                <th class="reserve"></th>
            </tr>
        </thead>
        <tbody>
            <tr ng-repeat="cars in car | orderBy:'year'">
                <td>{{cars.year}}</td>
                <td>{{cars.model}}</td>
                <td>{{cars.make}}</td>
                <td>{{cars.color}}</td>
                <td>{{cars.mileage | number}}</td>
                <td>{{cars.doors}}</td>
                <td>{{cars.horsepower}}</td>
                <td>{{cars.price | number}}</td>
                <td><div class="panel panel-default"><a  href="" ng-click="buttonPress()">Reserve</a></div></td>
            </tr>
        </tbody>
    </table>
</div>

有问题的部分位于底部,我有一个预约“按钮”

我遗漏了我的JSON文件,在那里正常工作。我只是不确定如何跟踪数组索引,因为ng-repeat做了它的事情。

这是角度:

    (function(){

var app = angular.module("myReserveApp", []);

app.controller("ButtonController", ["$scope", "$window", function($scope, $window){
    $scope.buttonPress = function(){
        $window.alert(JSON.stringify($scope.car[0]));
    }

}]);

    var MainController = function($scope, $http, $window){

var onGatherBoatData = function(response){

    $scope.boat = response.data;

};

var onError = function(reason){

    $scope.error = "Could not fetch Boat Data";

};

var onGatherCarData = function(response){

    $scope.car = response.data;

};

var onError = function(reason){

    $scope.error = "Could not fetch Car Data";

};

var onGatherTruckData = function(response){

    $scope.truck = response.data;

};

var onError = function(reason){

    $scope.error = "Could not fetch Truck Data";

};



$scope.message = "Hello, Angular Here!";

    };

app.controller("MainController", ["$scope", "$http", "$window", MainController]);



    }());

目前在代码的顶部我只是告诉对象[0],但我希望它特定于按下哪个按钮。感谢任何帮助,谢谢。

3 个答案:

答案 0 :(得分:2)

$index指的是ng-repeat中的索引。因此,如果您想在按钮上点击数组中的索引,请将buttonPress()更改为buttonPress($index)

您必须将控制器更改为以下内容:

$scope.buttonPress = function(index){
    $window.alert(JSON.stringify($scope.car[index]));
}

答案 1 :(得分:1)

要执行以下操作,您只需传递Declare @UserId nVarchar(255)='3847609f-6fd1-4a14-9675-000d74a5df80' 中的当前数据即可。此外,如果您想要当前索引,ngRepeat指令提供特殊属性,作为ngRepeat,它是一个迭代器。

$index

然后你可以这样调用你的函数:

$scope.buttonPress = function(car, index){
      //Retrieve current data of the ngRepeat loop
      console.log(car);

      //Current index of your data into the array
      console.log(index);
  }

答案 2 :(得分:0)

首先,谢谢你们的快速反应。这两个答案都有效。在阅读你的帖子之前,我找到了另一种方法。

    <div class="panel panel-default">
    <a  href="" ng-click="buttonPress(car.indexOf(cars))">Reserve:{{car.indexOf(cars)}}</a>
    </div>

使用(car.indexOf(cars))给我相同的结果

    $scope.buttonPress = function(index){
        $window.alert(JSON.stringify(index));   
    }

现在,当我点击“按钮”时,它会将数组索引发回给我,所以现在我应该可以使用该数据了。再次感谢你们的帮助。