3

У меня есть этот DatepickerКак я могу связать Jquery DatePicker с угловыми текстовым полем

http://jsfiddle.net/kevinj/TAeNF/2/

Текущие имеют подобного код

'use strict'; 

angular.module('core').directive('jqdatepicker', function() { 
    return { 
     restrict: 'A', 
     require: 'ngModel', 
     link: function (scope, element, attrs, ngModelCtrl) { 
      element.datepicker({ 
       dateFormat: 'dd/mm/yy', 
       onSelect: function (date) { 
        scope.date = date; 
        scope.$apply(); 
       } 
      }); 
     } 
    }; 
}); 

Я использую его как этот

<input type="text" ng-model="date" jqdatepicker /> 
<br/> 
{{ date }} 

Моя проблема в том, что я хочу использовать его в нескольких местах, и они могут иметь разные тонная модель как

model=date1, model=date2

Есть ли способ сделать это родовое так, что она работает на модели все, что прилагается к вместо жесткого кода

контроллер
scope.date = date; 
+0

'data.title' 2 способа связаны. поэтому, если вы обновите директиву modelto внутри, она будет отражать на data.title снаружи. В чем проблема? – PSL

+0

@PSL Я использовал выбор даты в этом поле ввода, и я видел, что я начинаю что-то удалять с клавиатуры, тогда я вижу, что родительское значение обновляется, но не при выборе datepicker. Я использовал этот datepicker http://jsfiddle.net/kevinj/TAeNF/2/ – user3214546

+0

Я просто вижу, что он работает отлично в вашем примере, и здесь тоже http://plnkr.co/edit/FPFuTO?p=preview – PSL

ответ

2

Используйте ngModel, чтобы установить вместо установки переменной области видимости внутри директивы, ограниченной по умолчанию. Если вы обновляете какое-либо свойство scope и хотите сделать его многоразовым, вы не должны использовать параметр по умолчанию (если не указано значение по умолчанию для текущей области, то же, что и область: false), или если вам требуется ngModel, тогда просто используйте ngModel controller пример. В вашем случае 3 ключевые вещи: -

//Set $viewvalue property of ngModel 
ngModelCtrl.$setViewValue(date); 
//Update the input with the ngmodel view value or in otherwords render it. 
ngModelCtrl.$render(); 
//Update any bindings invoking digest cycle 
scope.$apply(); 

Try:

datePicker.directive('jqdatepicker', function() { 
    return { 
     restrict: 'A', 
     require: 'ngModel', 
     link: function (scope, element, attrs, ngModelCtrl) { 
      element.datepicker({ 
       dateFormat: 'DD, d MM, yy', 
       onSelect: function (date) { 
        //Set viewvalue and apply it to update the input 
        ngModelCtrl.$setViewValue(date); 
        ngModelCtrl.$render(); 
        //Update bindings 
        scope.$apply(); 
       } 
      }); 
     } 
    }; 
}); 

Demo

+0

спасибо, приятель, который отлично работал – user3214546

+0

@ user3214546 Добро пожаловать. :) – PSL

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