title: change event not fire after select date from datePicker and $parser function of ngModelController not work
body: <p>In my customized directive, I do date conversion by  getting the Gregorian date from the Model and convert it to Persian date then display it to the user.<br>
  conversion to Persian date is done by using persianDatePicker then conversion to Gregorian date  updates the model.
     My problem is that by selecting date from DatePicker, the parser function of the NgModelController does not work and does not react to the date change.
  I used the following instruction in the OnSelect event of the DatePicker in the related JS file</p>
  
  <p>$("#" + inputId).change();</p>
  
  <p>and did put a function in the Link function and called that by the name <strong>onSelectedJalaliDate</strong></p>
  
  <p>in the related JS file.</p>
  
  <pre><code>onSelectedJalaliDate = function (value) {
                              ngModelCtrl.$setViewValue(value);
                       }
  </code></pre>
  
  <p>The function declared for the parser is called but the model is not updated.
  Please anybody who knows, tell me how can I call the function and then update the model.
  I used the firfox version 29.0.1.</p>
  
  <p>directive:</p>
  
  <pre><code>(function () {
  
      var direc = function () {
          return {
              restrict: 'EA',
              require: '^ngModel',
              scope: {},
              template: '&lt;input ng-class="{test:!isError}"&gt;&lt;/input&gt;',
              replace: true,
              link: function (scope, element, attrs, ngModelCtrl) {
                  scope.isError = true;
                  var inputId = attrs['id'];
  
                  if (!inputId || !ngModelCtrl)
                      return;
  
                  //gregorianToJalali will be called every time a model change, converting 
                  //gregorian dates and presenting persian date on the view
                  ngModelCtrl.$formatters.unshift(gregorianToJalali);
                  function gregorianToJalali(viewValue) {
                      if (viewValue) {
                          scope.isError = true;
                          var gDate = new Date(viewValue);
                          var gY = gDate.getFullYear();
                          var gM = gDate.getMonth();
                          var gD = gDate.getDate();
                          var value = JalaliDate.gregorianToJalali(gY, gM, gD);
                          var jalali = value[0].toString() + "/" + value[1].toString() + "/" + value[2].toString();
  
                          //The return of a formmatter is what is rendered on the DOM
                          return jalali;
                      }
                  }
  
                  //with that, jalaliToGregorian will be called every time a user fill the input
                  ngModelCtrl.$parsers.unshift(jalaliToGregorian);
                  function jalaliToGregorian(viewValue) {
                      if (!validateJalaliDate(viewValue)) {
                          return undefined;
                      }
                      else {
                          var jDate = viewValue.split('/');
                          var value = JalaliDate.jalaliToGregorian(jDate[0], jDate[1], jDate[2]);
                          var gDate = new Date(value[0], value[1], value[2]);
                          //The return of a $parsers is what is saved to the model
                          return gDate;
                      }
  
                  };
  
                  function validateJalaliDate(value) {
                      var array = value.split('/');
                      var result;
                      if (array.length != 3)
                          result = false;
                      else
                          result = JalaliDate.checkDate(array[0], array[1], array[2]);
  
                      ngModelCtrl.$setValidity('jalaliDatePickerValidation', result)
                      scope.isError = result;
                      return result;
                  }
  
                  Calendar.setup({
                      inputField: inputId,
                      ifFormat: '%Y/%m/%d',
                      dateType: 'jalali'
                  });
  
                  onSelectedJalaliDate = function (value) {
  
                      ngModelCtrl.$setViewValue(value);
                  }
              }
          }
      };
  
  
      var mod = angular.module('jalaliDatePickerModule', []);
      mod.directive('jalaliDatePicker', direc);
  
  }());
  </code></pre>