2017-05-19 4 views
0

Ich habe einen Datumswert in einem Dienst definiert, der von allen meinen Controllern verwendet wird (dh wenn eine Website lädt den Wert initialisiert und an alle Controller sendet), jetzt will ich in der Lage sein, diese Variable dynamisch von allen Controllern zu aktualisieren. Wenn ein Datum von einem der Controller zu diesem Dienst aktualisiert wird, sollte ein aktualisierter Wert an alle Controller gesendet (erneut initialisiert) werden. Dadurch, dass ich auf meiner Website ein gemeinsames Datum habe.Wie dynamisch zu aktualisieren Service-Wert-Wert

AnyHelp?!

hier ist mein Code für Service und einer der Controller sie und Aktualisierung verwendet (was allerdings nicht funktioniert):

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>

Antwort

0

Es gibt eine einfache Möglichkeit zu tun, dass Sie zuerst eine erstellen Objekt in Ihrem Service wie

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

dann geben Sie dieses Datum in Dienst, und Sie können dieses Datum über alle verwenden Controller und Sie können den Datumswert auch dynamisch ändern oder aktualisieren.

+0

Ich würde es versuchen, aber würde das Dinge dynamisch tun ?? Wird der aktualisierte Wert an alle Controller gesendet? – harveySp

+0

und wie würde ich auf dieses Objekt im Controller beziehen - bis jetzt habe ich es als '$ rootScope.variablename = Wert' – harveySp

+0

verweisen einen Getter in den Dienst, der dieses Objekt zurückgeben wird. –

Verwandte Themen