可以说,我有简单的数据表

            <table datatable="" dt-options="dtOptions" dt-column-defs="dtColumnDefs" class="row-border hover">
                <thead>
                    <th>ID</th>
                    <th>Name</th>
                </thead>
                <tbody>
                    <tr ng-repeat"reservation in reservations">
                        <td>{{reservation.ID}}</td><td>{{reservation.name}}</td>
                    </tr>
                </tbody>
            </table>

当我将一些字符串放入搜索框时,数据表正在被过滤。现在我想在 Angular 中遍历过滤的行并将 ID 读取到数组。如何在 Angular 中处理它?我可以使用 jquery,但我不想弄乱代码。

最佳答案

  $scope.addressDTInstance = {};
    var j = $scope.addressDTInstance.DataTable.rows();
  <table id="addressSelectionTable" class="table table-condensed table-bordered" datatable="ng" dt-options="addressdtOptions" dt-column-defs="addressdtColumnDefs" dt-instance="addressDTInstance">


这是让你上路的东西。需要一个您没有的 dtInstance 实例。所以在html table标签中添加dt-instance='dtInstance'。
然后在 Controller 顶部启动它,$scope.dtInstance = {};。
在您的 javascript 中执行单击或某些操作,您可以在其上设置断点,然后检查您的 $scope.dtInstance 以查看您拥有的所有属性和方法。正如您在我的代码段中看到的,我正在访问我的 dtInstance 的 DataTable.Rows。如果您需要更好的示例或帮助,请给我留言,我会修改。

更新
这是我发现有效的方法。我当然使用 DTOptionsbuilder。这将被调用两次,第一次是在创建时,第二次是在我填充填充我的表的数组变量时。我只是检查行是否存在并且第一个不是“无结果”。

 $scope.addressdtOptions = DTOptionsBuilder.newOptions()
                   .withOption('bFilter', false)
                   .withOption('bInfo', false)
                   .withOption('paging', false)
                   .withOption('processing', true)
                   .withOption('aaSorting', [1, 'asc'])
                   .withOption('language', { zeroRecords: 'No results' })
                   .withOption('initComplete', function () {
                       var rows = $("#addressSelectionTable > tbody > tr");
                       if (rows.length > 0 && rows[0].innerText !== "No results") {
                           var x = 3;
                       }

                   });


在这里,我正在为表设置 ng-repeat 变量。你可能没有按照我的方式去做,但你应该能够按照自己的方式解决问题。

 $.when($OfficerService.GetAddressSelections($scope.officer.EntityID, $scope.officer.EntityTypeID, $scope.officer.MemberID)).then(function (result) {
                        $scope.addresses = result.data;
                        $scope.$applyAsync();
                    });
<table id="addressSelectionTable" class="table table-condensed table-bordered" datatable="ng" dt-options="addressdtOptions" dt-column-defs="addressdtColumnDefs" dt-instance="addressDTInstance">
                <thead>
                    <tr>
                        <th></th>
                        <th>Type</th>
                        <th>Address</th>
                        <th>City</th>
                        <th>State</th>
                        <th>Zip</th>
                        <th>Country</th>
                        <th></th>
                    </tr>
                </thead>
                <tbody>
                    <tr ng-repeat="a in addresses">
                        <td class="centerColumn">
                            <input type="button" class="btn btn-primary" value="Select" ng-click="selectAddress(a.AddressID,a.AddressLocationCode,$event)" />
                        </td>
                        <td>
                            <span ng-if="a.AddressLocationCode == 'E'">Office</span>
                            <span ng-if="a.AddressLocationCode == 'M'">Member</span>
                        </td>
                        <td>
                            {{a.AddressLine1}}
                            <span ng-if="a.AddressLine2 != null"><br /> {{a.AddressLine2}}</span>
                        </td>
                        <td>{{a.City}}</td>
                        <td>{{a.StateCode}}</td>
                        <td>{{a.Zip}}</td>
                        <td>{{a.CountryCode}}</td>
                        <td>{{a.AddressID}}</td>
                    </tr>
                </tbody>
            </table>

关于javascript - 如何遍历 Angular 数据表中的过滤行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41015152/

10-10 15:40