我的自定义 startFrom
过滤器给我一个错误。
app.filter('startFrom', function() {
return function(input, start) {
start = +start; //parse to int
return input.slice(start);
}
});
app.controller("PostCtrl", function($scope, $http) {
$scope.currentPage = 0;
$scope.pageSize = 10;
$scope.hidePagination = true;
$scope.search = function() {
$http.get('someurl').then(sucesscalback,errorcalback);
function sucesscalback(response)
{
$scope.hidePagination = false;
console.log("Success:");
console.log(response.data.records);
$scope.posts = response.data;
$scope.numberOfPages=Math.ceil($scope.posts.records.length/$scope.pageSize);
alert($scope.numberOfPages);
}
function errorcalback(failure)
{
console.log("Error:");
console.log(failure);
}
最佳答案
您的过滤器需要检查输入是否存在:
app.filter('startFrom', function() {
return function(input, start) {
if (!input || !input.length) { return; }
start = +start; //parse to int
return input.slice(start);
}
});
否则,过滤器函数将运行并因此在 undefined
上调用 slice
,它没有 slice
的属性,如数组或字符串。
过滤器在没有值时被调用的原因是过滤器将在 Angular 运行其第一个 $digest
循环时运行。您可以通过在 Controller 中添加初始值来避免错误,但最好只将 if
语句添加到过滤器。
Here's a demo of both solutions.请注意没有错误。
关于javascript - 自定义过滤器在 AngularJS 中给出 "Cannot read property ' 切片' of undefined",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25723455/