Como fazer uma diretiva atualizar ng-model em jquery on event?

Eu estou fazendo uma diretiva AngularJS para um plugin de selecionador de data jQuery que deve atualizar um modelo ng quando a data do datepicker foi alterada.

Aqui está o código até agora:

angular.module('bootstrap-timepicker', []).directive('timepicker', [ function() { var link; link = function(scope, element, attr, ngModel) { element.datetimepicker(); element.on('dp.change', function(event) { // update ngModel ? }); }; return { restrict: 'A', link: link, require: 'ngModel' }; } ]); 

Como posso atualizar o ngModel no evento ‘dp.change’ considerando que o escopo, elemento, attr, ngModel não está disponível quando o evento é chamado?

Obrigado!

Isso é certeza de que qualquer plugin que tenha sido adicionado ao angular não atualiza o ng-model do escopo angular, precisamos manualmente fazê-lo no seu evento de mudança jquery. No plug-in jquery angular sempre deve ser ligado ao DOM usando a diretiva, porque a diretiva fornece um bom controle sobre um DOM.

Como você perguntou na sua pergunta que ngModel , element e object de scope não estão disponíveis dentro do evento dp.change de datetimepicker , eu não acho que isso poderia ser possível dentro da function de link de diretiva, você deve ter feito alguma outra coisa ou você faltou explicar na pergunta.

E para atualizar o ng-model do selecionador de data, você precisa adicionar o código abaixo em seu evento dp.change

 element.on('dp.change', function(event) { //need to run digest cycle for applying bindings scope.$apply(function() { ngModel.$setViewValue(event.date); }); }); 

No código acima, recuperamos a data atualizada do object de evento e, em seguida, $viewValue ao $viewValue ( valor da string real na view ) do ng-model , a fim de atualizar para todos os outros onde quer que esta variável ng-model tenha sido usada. para executar o ciclo de digitação manualmente usando $apply() no escopo da function de link da diretiva. A razão por trás do ciclo de digestão é que precisamos empurrar esse valor dentro ng-model variável ng-model $modalValue ( O valor no modelo, ao qual o controle está vinculado ).

Plunkr de trabalho

Deixe-me saber se você exigiu mais alguma coisa, eu vou te dar esse detalhe, obrigado.

Dê uma olhada nesta demo http://jsfiddle.net/TheRodeo/taujuuq2/3/ isso pode lhe dar uma idéia de como proceder