0
すべてのコントローラで使用されているサービスで日付値が定義されています(つまり、サイトが値を初期化してそれを使用するすべてのコントローラに送信したとき)。すべてのコントローラからこの変数を動的に更新できること。すなわち、日付がコントローラの1つからこのサービスに更新された場合、更新された値をすべてのコントローラに送信(初期化)しなければならない。私のウェブサイト全体で共通の日付を持つことができます。サービス変数値を動的に更新する方法
Anyヘルプ?
ここ(ただし動作しません)サービスと、それを使用して、コントローラの一つと更新のための私のコードです:
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>
私はそれを試してみましたが、それは物事を動的に行いますか?更新された値をすべてのコントローラに再送信しますか? – harveySp
と私はコントローラのこのオブジェクトをどのように参照するのでしょうか?今、私は '$ rootScope.variablename = value'としてこれを参照していました – harveySp
このオブジェクトを返すサービスにゲッターを作成してください。 –