2015-06-29 2 views
0

Я проверил все открытые вопросы с аналогичной темой, но не дал мне правильного рабочего решения, которое сводит меня с ума, и поэтому я открываю этот вопрос.Пользовательская директива AngularJS для datepicker не обновляет ng-model

Мой заказ директива выглядит

angular.module('angularSampleApp') .directive('datepicker', function() { 
'use strict'; 

return { 
    restrict: 'A', 
    require: 'ngModel', 
    link: function(scope, el, attr, ngModel) { 
     $(el).datepicker({ 
      maxDate: 0 , 
      onSelect: function(dateText) { 
       scope.$apply(function(){ 
        ngModel.$setViewValue(dateText); 
        ngModel.$viewValue = dateText; 
        ngModel.$render(); 
       }); 
      } 
     }); 
    } 
    }; 
}); 

Я использую директиву, как этот

<input type="text" id="datepicker" datepicker ng-model="jumpDate"> 
<a name="jump" id="jump" title="Jump" ng-click="jumpToDate()">Jump</a> 

и контроллер у меня есть что-то вроде этого:

$scope.jumpToDate = function() { 
     console.log($scope.jumpDate); 
    }; 

Однако директива не обновляют $ scope.jumpDate, и он всегда не определен, даже если я устанавливаю значение по умолчанию в контроллере, это n когда-либо обновленные, dateText имеют правильное значение.

Я использую угловую сборку 1.4.1

+0

Вам нужно только 'ngModel. $ SetViewValue (dateText)' и вам не нужно, чтобы обернуть его в '$ Scope. $ Apply'. – zeroflagL

+0

@zeroflagL все еще ничего не пробовал, чтобы один ... – vaske

+0

возможно такой же, как у http://stackoverflow.com/a/29194068/2435473 –

ответ

1

Я хотел бы проверить значения области действия по директиве. Я предполагаю, что ng-model устанавливает значение в области изоляции, а не в контроллере.

Или попробуйте использовать

ng-model="$parent.jumpDate" 
+0

отлично, это он, спасибо! – vaske

+2

Это создает плотную зависимость, не так ли? –

Смежные вопросы