我在服务中定义了一个日期值,供我的所有控制器使用(即当站点加载时,该值被初始化并发送给使用它的所有控制器(,现在我希望能够动态地从所有控制器更新此变量。 即,当日期从其中一个控制器更新到此服务时 - 应将更新的值(再次初始化(发送到所有控制器。在那里,允许我在整个网站上有一个共同的日期。
任何帮助?!
这是我的服务代码以及使用它并更新的控制器之一(虽然不起作用(:
appOne.factory('dates',function($rootScope){
$rootScope.startDateCal = moment().subtract(127, 'days');
$rootScope.endDateCal = moment();
});
appOne.controller("ControllerOne",['$scope','$http','apiUrl','$state','$timeout','$interval','dates', function($rootScope, $http,apiUrl,$state,
$timeout,$interval,dates){
$scope = this;
var apiURL = apiUrl ;
$scope.cb= function(start, end){
// console.log(start.format('D MMMM YYYY') + ' - ' + end.format('D MMMM YYYY'));
$('#dateRange span').html(start.format('MMMM D, YYYY') + ' - ' + end.format('MMMM D, YYYY'));
startDateCal = start;
endDateCal = end;
if($('#sel_deviceType').length){
type = $('#sel_deviceType').val();
} else {
type = "A";
}
$scope.loadChart(parseInt(start/1000),parseInt(end/1000), appKey, type);
}
$('#dateRange').on('apply.daterangepicker', function(ev, picker) {
// trying to update the service variable
$rootScope.startDateCal = moment.utc(startDateCal).format('LL');;
$rootScope.endDateCal = moment.utc(endDateCal).format('LL');;
});
$scope.cb($rootScope.startDateCal,$rootScope.endDateCal);
$('#dateRange').daterangepicker({
ranges: {
'Today': [moment(), moment()],
'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
'This Week': [moment().startOf('week'), moment().endOf('week')],
'Last Week': [moment().subtract(1, 'week').startOf('week'), moment().subtract(1, 'week').endOf('week')],
'This Month': [moment().startOf('month'), moment().endOf('month')],
'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]
},
locale: {
format: 'YYYY-MM-DD',
applyLabel: "Select"
},
startDate: $rootScope.startDateCal,
endDate: $rootScope.endDateCal
}, $scope.cb);
)}
appOne.controller("ControllerTwo",['$scope','$http','apiUrl','$state','$timeout','$interval','dates', function($rootScope, $http,apiUrl,$state,
$timeout,$interval,dates){
$scope = this;
var apiURL = apiUrl ;
$scope.cb= function(start, end){
// console.log(start.format('D MMMM YYYY') + ' - ' + end.format('D MMMM YYYY'));
$('#dateRange span').html(start.format('MMMM D, YYYY') + ' - ' + end.format('MMMM D, YYYY'));
startDateCal = start;
endDateCal = end;
if($('#sel_deviceType').length){
type = $('#sel_deviceType').val();
} else {
type = "A";
}
$scope.loadChart(parseInt(start/1000),parseInt(end/1000), appKey, type);
}
$('#dateRange').on('apply.daterangepicker', function(ev, picker) {
// trying to update the service variable
$rootScope.startDateCal = moment.utc(startDateCal).format('LL');;
$rootScope.endDateCal = moment.utc(endDateCal).format('LL');;
});
$scope.cb($rootScope.startDateCal,$rootScope.endDateCal);
$('#dateRange').daterangepicker({
ranges: {
'Today': [moment(), moment()],
'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
'This Week': [moment().startOf('week'), moment().endOf('week')],
'Last Week': [moment().subtract(1, 'week').startOf('week'), moment().subtract(1, 'week').endOf('week')],
'This Month': [moment().startOf('month'), moment().endOf('month')],
'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]
},
locale: {
format: 'YYYY-MM-DD',
applyLabel: "Select"
},
startDate: $rootScope.startDateCal,
endDate: $rootScope.endDateCal
}, $scope.cb);
)}
<div id="dateRange"></div>
有一个简单的方法可以做到这一点,首先在服务中创建一个对象,例如
var date={};
date.currdate=value;
然后,在服务中返回此日期,并且可以在所有控制器中使用此日期,还可以动态更改或更新日期值。