2017-05-19 21 views
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>

答えて

0

最初に作成することを行うための簡単な方法があります

var date={}; 
date.currdate=value; 

のようなあなたのサービス内のオブジェクト、あなたはこの日付がサービスに戻り、あなたがすべてにわたって、この日付を使用することができます日付値を動的に変更または更新することもできます。

+0

私はそれを試してみましたが、それは物事を動的に行いますか?更新された値をすべてのコントローラに再送信しますか? – harveySp

+0

と私はコントローラのこのオブジェクトをどのように参照するのでしょうか?今、私は '$ rootScope.variablename = value'としてこれを参照していました – harveySp

+0

このオブジェクトを返すサービスにゲッターを作成してください。 –

関連する問題