代码之家  ›  专栏  ›  技术社区  ›  Naomi

angularJs inifinite scroll指令-仅显示前20行

  •  0
  • Naomi  · 技术社区  · 7 年前

    我正在尝试对angularJS使用inifinite scroll指令。示例显示了div在div中的用法,但在我的示例中,我尝试在表中使用它。这是我的html:

    <div class="scrolling-table-body">
                        <table class="table table-bordered table-hover table-list">
                            <thead search-table-header data-table="duplicatesTable"
                                   data-search="sort(column)"
                                   data-show-row-selector="true"
                                   data-hide-sorting-indicator="true"
                                   data-row-selector-click="selectAllRows(allSelected)"
                                   data-column="column">
                            </thead>
                            <tbody infinite-scroll="loadMore()">                            
                                <tr ng-repeat="row in duplicatesArray"
                                    
                                    ng-click="selectedDuplicateIndex=$index;"
                                    ng-class="{selected: $index === selectedDuplicateIndex}">
                                    <td style="text-align:center;">
                                        <input type="checkbox"
                                               name="checkRow"
                                               ng-model="row.isSelected"
                                               ng-change="selectRow(row, $index);" />
                                    </td>
                                    <td>
                                        <span ng-if="row.barcode>0">{{row.barcode}}</span>
                                        <span>{{$index}}</span>
                                        <span class="pull-right">
                                            <i class="fa fa-trash"
                                               style="color:red;"
                                               ng-click="removeRow($index)"
                                               title="@Labels.delete"></i>
                                        </span>
                                    </td>
                                    <td>
                                        <div class="col-xs-12">
                                            
                                            <input type="text"
                                                   name="assetNo"
                                                   id="assetNo"
                                                   ng-model="row.assetNo"
                                                   class="form-control"
                                                   ng-change="checkAssetNo(row)"
                                                   ng-maxlength="100"
                                                   sm-duplicate-validator
                                                   validate-duplicates="true"
                                                   error-message="row.errorMessage"
                                                   api-method="api/rentalEquipments/checkForDuplicate"
                                                   primary-key-value="row.equipmentId"
                                                   ng-model-options="{  debounce: { default : 500, blur: 0 }}" />
                                        </div>
                                    </td>
                                    <td>
                                        <input type="text"
                                               name="serialNo1"
                                               id="serialNo1"
                                               ng-model="row.serialNo1"
                                               class="form-control"
                                               ng-maxlength="100" />
                                    </td>

    我最初将10行加载到duplicatesArray中,并为loadMore函数编写了以下代码:

    $scope.loadMore = function () {
    
                        const last = $scope.duplicatesArray.length;
                        if (last < $scope.numberOfDuplicates) {
                            for (let i = 1; i <= 10; i++) {
    
                                self.logInfo("Loading more duplicates...");
                                const newEquipment = {
    
                                    equipmentId: (last + i) * -1,
                                    descrip: self.model.descrip,
                                    homeShopId: self.model.homeShopId,
                                    ruleId: self.model.ruleId,
                                    manufacturerId: self.model.manufacturerId,
                                    modelId: self.model.modelId,
                                    typeId: self.model.typeId,
                                    levelId: self.model.levelId,
                                    equipSize: self.model.equipSize,
                                    bootMm: self.model.bootMm,
                                    bindingManufacturerId: self.model.bindingManufacturerId,
                                    bindingModelId: self.model.bindingModelId,
                                    cost: self.model.cost,
                                    bindingCost: self.model.bindingCost,
                                    unitCost: self.model.unitCost,
                                    errorMessage: "",
                                    duplicateForm: true,
                                    duplicatedId: self.model.equipmentId,
                                    isDuplicate: true,
                                    barcode: 0,
                                    assetNo: "",
                                    serialNo1: "", serialNo2: "", serialNo3: "", serialNo4: "",
                                    isSelected: false
                                };
                                $scope.duplicatesArray.push(newEquipment);
                            }
                        
                    }
                };

    这个js代码中目前存在一个问题(我在循环之前检查了最后一个<numberOfDuplicates,认为这可能是问题所在)。

    当我打开modal时,我看到列表中有20个项目,当我滚动时,我看不到更多的项目。

    你知道我做错了什么吗?

    此外,我对模式有以下标记是否重要:

    <ng-form name="equipmentDuplicatesForm">
            <div class="modal-body">
                
                <div id="fixed-header-table">
                    <div class="fixed-header-bg">                    
                    </div>
                    <div class="scrolling-table-body">
                  table goes here
        
         </div>
    
            <div class="modal-footer hundred-percent padTop padBottom">
                <button type="button" class="btn btn-warning"
                        data-dismiss="modal" aria-hidden="true"
                        ng-click="$dismiss()">
                    @Labels.cancel
                </button>
    
            </div>
        </ng-form>
    0 回复  |  直到 7 年前