2014-04-22 21 views
1

我是Angular JS的新手,我懷疑答案是使用工廠,但這超出了我目前的能力。一個UI Bootstrap DatePicker如何更新多個控制器?

難道我$scope.$watch()在我的datepicker的控制器,並且,當值更改時,設置一個$rootscope變量,並讓其他控制器$rootscope.$watch()那?

回答

1

是的,你的直覺是完全正確的,它的出現在腦海中清晰的方式:

app.service("dateService",function(){ 
    var selectedDate=null; 
    return { 
      getSelectedDate:function(){ 
      return selectedDate; 
      }, 
      setSelectedDate:function(date){ 
      selectedDate=date; 
      }, 
    }; 
}) 

,並在你的控制器:

app.controller("ctrl1",function($scope,dateService){ 
    $scope.$watch("dt",function(date){ 
    if(date){ 
     dateService.setSelectedDate(date); 
    } 
    },true); 
}); 

app.controller("ctrl2",function($scope,dateService){ 
    $scope.$watch(dateService.getSelectedDate,function(date){ 
    $scope.dateFromTheOtherController=date; 
    },true); 
}); 
相關問題