Javascript 角度JS ng表格日期范围筛选器问题
我有一个带有日期范围过滤器的列表,我正在使用ng表。我可以使用ng table轻松过滤名称和其他字符串/数字字段。但是日期范围过滤器似乎不起作用 用于列表的我的json数据Javascript 角度JS ng表格日期范围筛选器问题,javascript,angularjs,filter,date-range,ngtable,Javascript,Angularjs,Filter,Date Range,Ngtable,我有一个带有日期范围过滤器的列表,我正在使用ng表。我可以使用ng table轻松过滤名称和其他字符串/数字字段。但是日期范围过滤器似乎不起作用 用于列表的我的json数据 { "data":[ { "cellphone":"24234234234", "createddate":"09/09/2014", "firstname":"Giacomo", "resellerid":"7478454
{
"data":[
{
"cellphone":"24234234234",
"createddate":"09/09/2014",
"firstname":"Giacomo",
"resellerid":"747845473"
},
{
"cellphone":"24234234234",
"createddate":"09/02/2010",
"firstname":"Tomy",
"resellerid":"747783"
},
{
"cellphone":"999999",
"createddate":"09/02/2010",
"firstname":"Sunny",
"resellerid":"2312312"
}
]
}
我使用ng repeat遍历这个json对象
过滤框在表外,我使用以下代码
<table class="table display table-striped table-bordered" ng-table="tableParams">
<tr ng-repeat="customer in $data | filter: id | filter :name
|filter :createdfrom>
<td data-title="'Reseller ID'" sortable="'resellerid'">
{{customer.resellerid}}
</td>
<td data-title="'Reseller Name'" sortable="'firstname'">
{{customer.firstname}} {{customer.lastname}}
</td>
<td data-title="'Created Date'" sortable="'createddate'">
{{customer.createddate}}
</td>
</tr>
</table>
您确定ng model=“createdfrom.createddate”
将任何数据附加到$scope吗
尝试添加
<tr ng-repeat="customer in $data | filter: id | filter :name
|filter :createdfrom>
然后像这样使用它:
(function () {
'use strict';
angular.module('app').filter("dateRangeFilter", ['$filter', function ($filter) {
return function (items, from, to) {
var df = from;
var dt = to;
var result = [];
for (var i = 0; i < items.length; i++) {
var date_bet = parseDate(items[i].StartDate);
if (date_bet >= df && dt >= date_bet) {
result.push(items[i]);
}
}
return result;
};
}]);
我使用UI引导日期选择器创建了这个。
看看这是否解决了你的问题
//代码在这里
var myapp=angular.module('NgTableExample',['ngAnimate','ui.bootstrap','ngTable']);
函数解析日期(输入){
返回日期。解析(输入);
}
myapp.filter(“dateRangeFilter”,函数(){
返回函数(项目、从、到){
var df=解析日期(从);
var dt=解析日期(至);
var结果=[];
对于(变量i=0;idf&&dt>日期下注){
结果推送(项目[i]);
}
}
返回结果;
};
});
控制器(“ExampleCtrl”,函数($scope,$filter,NgTableParams){
var self=这个;
风险值数据=[{
姓名:“莫罗尼”,
年龄:50,,
日期时间:1450562394000
}, {
姓名:“西蒙”,
年龄:43岁,
日期时间:1450562394000
}, {
姓名:“雅各布”,
年龄:27岁,
日期时间:1450648794000
}, {
名称:“尼菲”,
年龄:29,,
日期时间:1450648794000
}, {
姓名:“基督徒”,
年龄:34岁,
日期时间:1450475994000
}, {
名称:“天香”,
年龄:43岁,
日期时间:1450475994000
}, {
姓名:“雅各布”,
年龄:27岁,
日期时间:1450475994000
}];
self.sensorTableData=新的NgTableParams({
计数:7
}, {
数据集:数据
});
$scope.today=函数(){
$scope.dt2=新日期(2015年11月26日);
$scope.dt1=新日期(2015年11月17日);
};
$scope.today();
$scope.toggleMin=function(){
$scope.minDate=$scope.minDate?空:新日期();
};
$scope.toggleMin();
$scope.maxDate=新日期(2020年5月22日);
$scope.open1=函数($event){
$scope.status1.opened=true;
};
$scope.open2=函数($event){
$scope.status2.opened=true;
};
$scope.setDate=函数(年、月、日){
$scope.dt1=新日期(年、月、日);
$scope.dt2=新日期(年、月、日);
};
$scope.dateOptions={
年份:“yy”,
开始日期:1
};
$scope.formats=['dd-MMMM-yyyy','yyyy/MM/dd','dd.MM.yyyy','shortDate'];
$scope.format=$scope.formats[0];
$scope.status1={
开放:假
};
$scope.status2={
开放:假
};
});代码>
Ng表格的日期范围过滤器!
从日期开始
迄今为止
{{row.name}
{{row.age}
{{row.datetime}日期:'dd-MMMM-yyyy'}
继Himanshu Jain的例子之后,我不得不调整它以使其正常工作
(函数(){
"严格使用",;
角度.module('app').filter('dateRangeFilter',['$filter',函数($filter){
返回函数(项目、从、到){
var df=来自;
var dt=至;
var结果=[];
对于(变量i=0;i=df&dt>=日期下注){
结果推送(项目[i]);
}
}
返回结果;
};
}]);
})() 看来我的日期选择器根本没有给出正确格式的日期。我使用了自举日期选择器--当我在datepicker中选择09/02/2010时,所选日期如下所示-createdfrom.createddate:“2010-02-08T18:30:00.000Z”我已经在我的控制器“$scope.format='dd/MM/yyyyy';”中格式化了日期选择器日期,并且它在文本框中完美地显示了日期。可能是什么问题?添加了编辑来回答-可能只是HTML错误-缺少“
在打开
标签时的
之前..添加了第三个编辑以回答第二个和第三个问题,这将解决所有问题:)我已复制了筛选器的一部分,引号已经存在。确定。因此,请检查第三个编辑。这应该会有帮助:)我试图实现你的代码,但它不适合我。它显示未定义的项目
yourModule.directive('viewValueModel', [
'$parse',
function ($parse) {
return {
require: 'ngModel',
link: function (scope, element, attrs, ngModelCtrl) {
ngModelCtrl.$viewChangeListeners.push(function () {
$parse(attrs.viewValueModel).assign(scope, ngModelCtrl.$viewValue);
});
}
};
}
]);
<input
class="form-control"
type="text"
datepicker-popup="{{format}}"
ng-model="someFakeModelPlaceholder"
view-value-model="createdfrom.createddate"
is-open="opened1"
min-date="minDate"
max-date="'2015-06-22'"
datepicker-options="dateOptions"
date-disabled="disabled(date, mode)"
ng-required="true"
close-text="Close"
placeholder="DD/MM/YY"
id="date1">
(function () {
'use strict';
angular.module('app').filter("dateRangeFilter", ['$filter', function ($filter) {
return function (items, from, to) {
var df = from;
var dt = to;
var result = [];
for (var i = 0; i < items.length; i++) {
var date_bet = parseDate(items[i].StartDate);
if (date_bet >= df && dt >= date_bet) {
result.push(items[i]);
}
}
return result;
};
}]);