使用datetimepicker Javascript筛选后未更新列表
我试图为我的ng repeat创建一个自定义过滤器,但是当我使用datetimepicker.js时,它不会根据条件更新列表。我对Javascript相当陌生,所以任何指针/编码实践都会很有帮助 /*模块文件*/ /*控制器文件*/ /*HTML端*/使用datetimepicker Javascript筛选后未更新列表,javascript,jquery,angularjs,date,filtering,Javascript,Jquery,Angularjs,Date,Filtering,我试图为我的ng repeat创建一个自定义过滤器,但是当我使用datetimepicker.js时,它不会根据条件更新列表。我对Javascript相当陌生,所以任何指针/编码实践都会很有帮助 /*模块文件*/ /*控制器文件*/ /*HTML端*/ .... 我希望筛选器动态更新列表。使用: 从文档中: AngularJS通过提供自己的事件处理循环来修改正常的JavaScript流。这将JavaScript分为经典和AngularJS执行上下文。只有在AngularJS执行上下文中应用的
....
我希望筛选器动态更新列表。使用:
从文档中:
AngularJS通过提供自己的事件处理循环来修改正常的JavaScript流。这将JavaScript分为经典和AngularJS执行上下文。只有在AngularJS执行上下文中应用的操作才会受益于AngularJS数据绑定、异常处理、属性监视等
您还可以使用从JavaScript输入AngularJS执行上下文。请记住,在大多数地方(控制器、服务)$apply
已由处理事件的指令为您调用。只有在实现自定义事件回调时,或者在使用第三方库回调时,才需要显式调用$apply
。
-
非常感谢你!现在可以了。此外,我还发现了另一个问题,即月份索引从0开始。
.filter('adminSummaryDataFilter', function () {
return function (list, selectedStart){
var output = [];
var dStart = new Date(selectedStart);
angular.forEach(list, function (item) {
var temp = item.WorkOrderStart.substring(0,item.WorkOrderStart.indexOf(' '));
var temp2 = item.WorkOrderStart.substring(item.WorkOrderStart.indexOf(' ') + 1, item.WorkOrderStart.length);
var tempArr = temp.split('-'); //[0] = year, [1] = month, [2] = day
var temp2Arr = temp2.split(':'); //[0] = hour, [1] = minutes, [2] = seconds
var newDate = new Date(tempArr[0], tempArr[1], tempArr[2], temp2Arr[0], temp2Arr[1], temp2Arr[2]);
if (newDate >= dStart) {
output.push(item);
}
});
return output;
}
});
$scope.selectedStart = 0;
$scope.btn_Calendar = function (id) {
$("#" + id).datetimepicker({
inline: true,
sideBySide: true
}).on("dp.change", function () {
$scope.selectedStart = $("#dateTest").val();
});
<div class="fsTableDetail summary_tableDetail"
ng-repeat="data in SummaryData | adminSummaryDataFilter:selectedStart">
....
</div>
$scope.selectedStart = 0;
$scope.btn_Calendar = function (id) {
$("#" + id).datetimepicker({
inline: true,
sideBySide: true
}).on("dp.change", function () {
$scope.selectedStart = $("#dateTest").val();
$scope.$apply();
});