AngularJS - ui - bootstrap 分页错误
AngularJS - ui-bootstrap pagination error
我在 ui-bootstrap 分页时遇到错误 未知提供程序:startFromFilterProvider
这是我的控制器代码:
function observedCars($scope, $http, API, CarDetailService, $state) {
$http.get( API + '/car/?observed=true&offset=0&page_size=20' ).
success(function(data) {
$scope.observed = data;
});
$scope.pageSize = 5;
$scope.currentPage = 1;
$scope.selectCar = function(carId) {
CarDetailService.setCar(carId);
$state.go('taskDetails');
};
}
这里是 HTML:
<div ng-controller="observedCars">
<div ng-repeat="obv in observed['Observed CARs'] | startFrom:(currentPage - 1) * pageSize | limitTo: pageSize" class="myCar">
<div class="carId">{{ obv['Display Name'] }}</div>
<div class="title">{{ obv['Project Title'] }}</div>
<div class="status"> {{obv.Status}} </div>
<h4><u>Current Approver</u></h4>
<div class="currApp dont-break-out">{{obv['Current Approver']}}</div>
<h4><u>Amount</u></h4>
<div class="modified">${{obv.Amount | number:2}}</div>
<div class="carBtnWrap">
<div class="viewCar"><a ng-click="selectCar(obv['CAR ID'])">View Details</a></div>
</div>
</div>
<ul uib-pagination total-items="observed['Observed CARs'].length" ng-model="currentPage" items-per-page="pageSize"></ul>
</div>
我还应该提到它确实在 "uib-pagination" 按钮部分显示了正确数量的按钮编号。因此,适当的页面加载量不是错误的数据原因。
我该如何解决这个问题
谢谢
您似乎没有声明或定义 startFrom 过滤器。这里有一个例子:AngularJS with AngularUI Bootsrap pagination directive doesn't hide results
app.filter('startFrom', function () {
return function (input, start) {
if (input === undefined || input === null || input.length === 0
|| start === undefined || start === null || start.length === 0 || start === NaN) return [];
start = +start; //parse to int
try {
var result = input.slice(start);
return result;
} catch (e) {
// alert(input);
}
}
});
您正在以下表达式中使用 startFrom
过滤器:<div ng-repeat="obv in observed['Observed CARs'] | startFrom:(currentPage - 1) * pageSize | limitTo: pageSize" class="myCar">
您可以从您的示例中复制 startFrom
的实现,或者您忘记嵌入它。常见的实现方式如下:
module.filter('startFrom', function () {
return function (input, skipCount) {
if (!input) return input;
return input.slice(skipCount);
};
});
我在 ui-bootstrap 分页时遇到错误 未知提供程序:startFromFilterProvider
这是我的控制器代码:
function observedCars($scope, $http, API, CarDetailService, $state) {
$http.get( API + '/car/?observed=true&offset=0&page_size=20' ).
success(function(data) {
$scope.observed = data;
});
$scope.pageSize = 5;
$scope.currentPage = 1;
$scope.selectCar = function(carId) {
CarDetailService.setCar(carId);
$state.go('taskDetails');
};
}
这里是 HTML:
<div ng-controller="observedCars">
<div ng-repeat="obv in observed['Observed CARs'] | startFrom:(currentPage - 1) * pageSize | limitTo: pageSize" class="myCar">
<div class="carId">{{ obv['Display Name'] }}</div>
<div class="title">{{ obv['Project Title'] }}</div>
<div class="status"> {{obv.Status}} </div>
<h4><u>Current Approver</u></h4>
<div class="currApp dont-break-out">{{obv['Current Approver']}}</div>
<h4><u>Amount</u></h4>
<div class="modified">${{obv.Amount | number:2}}</div>
<div class="carBtnWrap">
<div class="viewCar"><a ng-click="selectCar(obv['CAR ID'])">View Details</a></div>
</div>
</div>
<ul uib-pagination total-items="observed['Observed CARs'].length" ng-model="currentPage" items-per-page="pageSize"></ul>
</div>
我还应该提到它确实在 "uib-pagination" 按钮部分显示了正确数量的按钮编号。因此,适当的页面加载量不是错误的数据原因。
我该如何解决这个问题
谢谢
您似乎没有声明或定义 startFrom 过滤器。这里有一个例子:AngularJS with AngularUI Bootsrap pagination directive doesn't hide results
app.filter('startFrom', function () {
return function (input, start) {
if (input === undefined || input === null || input.length === 0
|| start === undefined || start === null || start.length === 0 || start === NaN) return [];
start = +start; //parse to int
try {
var result = input.slice(start);
return result;
} catch (e) {
// alert(input);
}
}
});
您正在以下表达式中使用 startFrom
过滤器:<div ng-repeat="obv in observed['Observed CARs'] | startFrom:(currentPage - 1) * pageSize | limitTo: pageSize" class="myCar">
您可以从您的示例中复制 startFrom
的实现,或者您忘记嵌入它。常见的实现方式如下:
module.filter('startFrom', function () {
return function (input, skipCount) {
if (!input) return input;
return input.slice(skipCount);
};
});