迭代 ng-repeat

Iterate on ng-repeat

我正在尝试弄清楚如何在 angular 中调用变量。我是 angularjs 的新手,似乎无法弄清楚为什么在第一个示例中我们在 ng-repeat 'group in $groups' 中迭代,而在第二个示例中我们在 'user in $data' 中迭代,我不能似乎弄清楚了 $groups 和 $data 的来源以及为什么我不能更改两个示例中的名称并保持它的工作,所以我现在可以在我自己的示例中如何调用它们。

第一个例子:http://plnkr.co/edit/CBcbkc?p=preview

var app = angular.module('main', ['ngTable']).
controller('DemoCtrl', function($scope, $filter, ngTableParams) {
    var data = [{name: "Moroni", age: 50, role: 'Administrator'},
                {name: "Tiancum", age: 43, role: 'Administrator'},
                {name: "Jacob", age: 27, role: 'Administrator'},
                {name: "Nephi", age: 29, role: 'User'},
                {name: "Enos", age: 34, role: 'User'}];

    $scope.tableParams = new ngTableParams({
        page: 1,            // show first page
        count: 10          // count per page
    }, {
        groupBy: 'role',
        total: data.length,
        getData: function($defer, params) {
            var orderedData = params.sorting() ?
                    $filter('orderBy')(data, $scope.tableParams.orderBy()) :
                    data;

            $defer.resolve(orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count()));
        }
    });
})
  
    <table ng-table="tableParams" class="table">
<tbody ng-repeat="group in $groups">
    <tr class="ng-table-group">
        <td colspan="{{$columns.length}}">
            <a href="" ng-click="group.$hideRows = !group.$hideRows">
                <span class="glyphicon" ng-class="{ 'glyphicon-chevron-right': group.$hideRows, 'glyphicon-chevron-down': !group.$hideRows }"></span>
                <strong>{{ group.value }}</strong>
            </a>
        </td>
    </tr>
    <tr ng-hide="group.$hideRows" ng-repeat="user in group.data">
        <td sortable="name" data-title="'Name'">
            {{user.name}}
        </td>
        <td sortable="age" data-title="'Age'">
            {{user.age}}
        </td>
    </tr>
</tbody>
</table>

第二个例子:http://plnkr.co/edit/HUe0e1zBGOG9oOyqpGq9?p=preview

var app = angular.module('main', ['ngTable']).
controller('DemoCtrl', function($scope, $filter, ngTableParams) {
    $scope.myValues = [{name: "Moroni", age: 50},
                {name: "Tiancum", age: 43},
                {name: "Jacob", age: 27},
                {name: "Nephi", age: 29},
                {name: "Jacob", age: 27},
                {name: "Nephi", age: 29},
                {name: "Enos", age: 34}];

    $scope.tableParams = new ngTableParams({
        sorting: {
            name: 'asc'     
        }
    }, {
        getData: function($defer, params) {
            $defer.resolve($filter('orderBy')($scope.myValues, params.orderBy()));
        }
    });
});
  
    <button ng-click="tableParams.sorting({})" class="btn btn-default pull-right">Clear sorting</button>
    <p><strong>Sorting:</strong> {{tableParams.sorting()|json}}

    <table ng-table="tableParams" class="table">
        <tr ng-repeat="user in $data">
            <td data-title="'Name'" sortable="'name'">
                {{user.name}}
            </td>
            <td data-title="'Age'" sortable="'age'">
                {{user.age}}
            </td>
        </tr>
    </table>

如果您想了解变量和 angular 的一般工作原理,THIS 是一个很好的教程。

如果您想弄清楚为什么不能更改示例中的名称,答案是您正在使用由 this guy 创建的名为 ng-table 的自定义指令在处理 angular 中的 table 时让生活更轻松一些。例如,如果您想 "group"。所以 $data 和 $groups 是其中的一部分。

在您的示例中,您创建了一个变量,其中包含一组名为 "myValues" 的对象。该变量存在于范围内。您可以在 html 中访问该数据,并使用 angular 中的 ng-repeat,如下所示:

<table class="table">
        <tr ng-repeat="user in myValues">
            <td data-title="'Name'" sortable="'name'">
                {{user.name}}
            </td>
            <td data-title="'Age'" sortable="'age'">
                {{user.age}}
            </td>
        </tr>
 </table>

请注意,您将不再使用指令 "ng-table." 用户在 html 中与您的 ng-repeat 一起定义,您可以轻松地将其称为 "righteousDude in myValues" 或 "guy in myValues".

<table class="table">
       <tr ng-repeat="righteousDude in myValues">
            <td data-title="'Name'" sortable="'name'">
                 {{righteousDude.name}}
            </td>

如果您想要更改数据名称,您可以在 .js 文件中定义它的地方进行更改。

$scope.righteousDudes = [{name: "Moroni", age: 50},
                {name: "Tiancum", age: 43},.....ect

请记住 ng-repeat 是一个 angular 指令 "instantiates a template once per item from a collection"

以及您在 ng-repeat 中创建的变量...即"user" 表示该项目。希望对您有所帮助!