我在一个服务中定义了一个日期值,我的所有控制器都使用该服务(即当一个站点加载时,该值被初始化并发送给使用它的所有控制器),现在我希望能够从所有控制器更新这个变量控制器动态。即,当从其中一个控制器更新日期到此服务时 - 应将更新的值发送(再次初始化)给所有控制器。允许我在我的网站上有一个共同日期。
AnyHelp?!
这是我的服务代码和使用它并更新的控制器之一(虽然不起作用):
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>
答案 0 :(得分:0)
首先在服务中创建一个对象,如
,这是一种简单的方法var date={};
date.currdate=value;
然后在服务中返回此日期,您可以在所有控制器上使用此日期,也可以动态更改或更新日期值。