我从第一次加载的api中获取数据并将其保存在数组中。然后,当用户指定他/她想要从i搜索的日期范围时,根据用户指定的内容将结果显示在保存的数组中的视图中。它工作得很好,但问题是我能够在用户搜索没有结果时显示错误信息
.controller('billing_statement_ctrl', function($scope, $http, $ionicLoading, $ionicPopup, $cordovaToast, $location, $ionicModal, $filter) {
$scope.account_number = localStorage.getItem("account_number");
///alert if connection fails
$scope.connect = function() {
var alertPopup = $ionicPopup.alert({
title: 'Error',
template: '<p align="center">Problem Contacting Server</p>',
});
};
$scope.state_request = function() {
$http.post("http://localhost/server/statement.php", {
'id': $scope.account_number
}).success(function(data) {
console.log(JSON.stringify(data));
$scope.record = data;
})
$scope.from = $filter('date')($scope.sdate, "yyyy-MM-dd" + 'T00:00:00') + 'Z';
$scope.to = $filter('date')($scope.edate, "yyyy-MM-dd" + 'T00:00:00') + 'Z';
}
})
.filter('dateRange', function() {
return function(records, from, to) {
return records.filter(function(record) {
return record.Date >= from && record.Date <= to;
if (record == '') {
alert('its empty')
} else {
alert('results found')
}
});
}
})
使用我的脚本,当它成功或不成功时,我得不到警报。
其次,当页面加载时,我收到此错误Cannot read property 'filter' of undefined
答案 0 :(得分:2)
您不会收到提醒,因为您在触发警报的条件之前有return
。
函数中的return
之后的代码不会执行。另外,请勿使用alert()
进行调试...使用console
console.log()
方法
对于初始加载,过滤器正在未定义的输入值上运行,可能是因为在http请求完成之前未定义视图中的变量。因此它不是一个数组,错误告诉你你不能在它上面使用数组方法
如果输入未定义,请调整自定义角度过滤器以返回null或空数组。
.filter('dateRange', function() {
return function(records, from, to) {
// return empty array if input not defined or not array
if(!records || !angular.isArray(records)){
return [];
}
var results = records.filter(function(record) {
// run console log tests here...before the return
return record.Date >= from && record.Date <= to;
});
console.log( 'Number of results:', results.length);
return results;
}
})