我正在尝试使用自定义过滤器来过滤日期范围,保留了文本字段以便在popver中获取用户的日期。它不起作用,而我有另一个文本框来在标题栏中获取名称,并且能够在ng-repeat
中获取默认过滤器的值。
我在这里想念的是什么?
Popver中的日期字段
哪个不在任何控制器下,它在popver中
<label class=" item-input">
<span class="input-label" style="width:50%;font-size:14px;">From Date</span>
<input type="text" ng-model="fromDate"/>
</label>
HTML - ng-repeat
<div ng-repeat="item in Items | filter: custname | filter: applyDateFilter(fromDate, toDate)">
<div class="row item wrap">
<div class="col col-95">
<ion-checkbox ng-model="item.Selected">
<div class="row">
<div class="col col-67">
<p>{{item.name}}</p>
</div>
<div class="col col-33 right">
<p>{{item.order_date | datetimeFormat }}</p>
</div>
</div>
</ion-checkbox>
</div>
</div>
</div>
过滤
.controller("dbController", function($scope, $rootScope) {
$scope.applyDateFilter = function(from, to) {
return function(items, from, to) {
console.log(items);
console.log('from '+from);
console.log('to '+to);
console.log('fromDate '+$scope.fromDate);
console.log('toDate '+toDate);
var result = [];
if(from == 0 && to == 0)
return items;
if(from != '' && to != ''){
var df = parseDate(from);
var dt = parseDate(to);
for (var i=0; i<items.length; i++){
var tf = new Date(items[i].order_date * 1000);
if (tf >= df && tf <= dt) {
result.push(items[i]);
}
}
}
return result;
};
};
});
也尝试使用过滤器 datetime:fromDate:toDate
.filter('datetime', function($filter){
return function(items, fromDate, toDate){
from = fromDate;
to = toDate;
var result = [];
if(from == 0 && to == 0)
return items;
if(from != '' && to != ''){
var df = parseDate(from);
var dt = parseDate(to);
for (var i=0; i<items.length; i++){
var tf = new Date(items[i].order_date * 1000);
if (tf >= df && tf <= dt) {
result.push(items[i]);
}
}
}
return result;
};
});
答案 0 :(得分:0)
popover可能正在创建不同的范围,因此您的ng-model
已注册到其他范围。
请尝试使用此解决方案:
创建一个全局控制器并将其应用于<html>
或<body>
并在其中添加类似内容(<body ng-controller="GlobalController">
):
myApp.controller('GlobalController', function($scope, $rootScope) {
$rootScope.globalModels = {};
// Or use below if you are using ui-bootstrap
// $scope.globalModels = {};
});
现在,改变你的观点:
<label class=" item-input">
<span class="input-label">From Date</span>
<input type="text" ng-model="globalModels.fromDate"/>
</label>
现在,在将其传递到ng-repeat
过滤器时,请传递globalModels.fromDate
而不是fromDate
。对toDate
执行相同的操作。