I'm assuming you're using a jQuery-based Bootstrap datepicker. Unfortunately, mixing jQuery-based Bootstrap widgets with Angular rarely works out well.
The better alternative is to use UI Bootstrap, which is a collection of Bootstrap widgets written entirely in Angular. For example, here's a datepicker.
Once you're using Angular for your widgets (with UI Bootstrap), watching for changes to your date becomes as simple as $scope.$watch():
$scope.$watch('date', function() { /* ... */ });
Full example:
var app = angular.module('app', ['ui.bootstrap']); app.controller('Main', function($scope) { $scope.date = new Date(); // watch date for changes $scope.$watch('date', function(newValue, oldValue) { if (newValue !== oldValue) { $scope.message = 'Date changed from ' + oldValue + ' to ' + newValue; } }); });
<div ng-app="app"> <div ng-controller="Main"> <datepicker ng-model="date"></datepicker> <div ng-bind="message"></div> </div> </div> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.2/angular.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-bootstrap/0.13.0/ui-bootstrap-tpls.min.js"></script>
Someone may be able to provide an answer that allows the jQuery-based datepicker to work "good enough" with Angular, but that's a slippery road.