angularJS, связанный с datepicker (не JQuery UI Datepicker, а что-то еще)

Я пытаюсь связать angularJS с datepicker, который приходит с этого сайта: http://freqdec.github.io/datePicker/ Согласно документации, именно так он создает средство выбора даты на основе идентификатора, это можно сделать только с помощью идентификатора, а не класса, а не jquery obj.

datePickerController.createDatePicker({
formElements:{
    "inp1":"%d/%m/%Y"
}
});

Я создаю директиву для этого:

            .directive('datepicker', function() {
            return {
                restrict : 'A', // the directive is restricted to an attribute
                require : 'ngModel',
                link : function(scope, element, attrs, ngModelCtrl) { // the link() function is used to setup the datepicker
                    // http://freqdec.github.io/datePicker/
                    var id = attrs.id;
                    var dateFormat = "%m/%d/%Y";
                    var fe = {}
                    fe[id + ''] = dateFormat;
                    datePickerController.createDatePicker({
                        // Associate the text input to a MM/DD/YYYY date format
                        formElements : fe
                    });
                }
            }
        })

Когда я отлаживаю, перед вызовом

datePickerController.createDatePicker({
                        // Associate the text input to a MM/DD/YYYY date format
                        formElements : fe
                    });

Я понимаю

$(id)

возвращается пустым.

[]

Затем я понимаю, что элемент html не создан, потому что я вижу

element

что-то вроде

<input class="col-xs-10 noPadding datepicker ng-pristine ng-untouched ng-valid" datepicker="" id="{{'licEffDate'+$index}}" ng-model="license.licEffDate">

идентификатор в элементе еще не был оценен.

но я могу только подготовить этот идентификатор, чтобы передать его в средство выбора даты.

Есть ли способ решить эту проблему?


person Peter Huang    schedule 06.02.2015    source источник
comment
В отличие от форумов, мы не используем слова «Спасибо» или «Любая помощь приветствуется» или подписи на Stack Overflow. См. раздел Должен ли быть "Привет", "спасибо" слоганов и приветствий удалить из постов?. Кстати, это заранее спасибо, а не спасибо заранее.   -  person John Saunders    schedule 07.02.2015


Ответы (1)


Вам нужно сделать две вещи: transclude:true в директиве, а во-вторых, нужно обернуть вызов datepicker() в $timeout, чтобы отложить попытку до запуска следующего углового цикла, гарантируя, что преобразованный идентификатор установлен в DOM.

Источник

Помощь Fiddle

person squiroid    schedule 06.02.2015
comment
Отличное счастливое кодирование :-) - person squiroid; 06.02.2015