2015-04-09 2 views
0

я AMB с помощью директивы самозагрузки-Datepicker, и я пытаюсь установить заполнитель во входном потоке, что директива создает:Угловое - установить заполнитель в шаблоне параметром

директива заменяет HTML код, который вызывает его с статический шаблон. Вот директива:

dp.directive('ngDatepicker', function() { 
    return { 
    restrict: 'A', 
    replace: true, 
    scope: { 
     ngOptions: '=', 
     ngModel: '=' 
    },  
    template: '<div class="input-append date">\n <input type="text" placeholder="{{myPlaceholder}}" ><span class="add-on"><i class="icon-calendar"> </i></span>\n</div>', 
    link: function(scope, element) { 
     scope.inputHasFocus = false; 
     element.datepicker(scope.ngOptions).on('changeDate', function(e) { 
     var defaultFormat, defaultLanguage, format, language; 
     defaultFormat = $.fn.datepicker.defaults.format; 
     format = scope.ngOptions.format || defaultFormat; 
     defaultLanguage = $.fn.datepicker.defaults.language; 
     language = scope.ngOptions.language || defaultLanguage; 
     return scope.$apply(function() { 
      return scope.ngModel = $.fn.datepicker.DPGlobal.formatDate(e.date, format, language); 
     }); 
     }); 
     element.find('input').on('focus', function() { 
     return scope.inputHasFocus = true; 
     }).on('blur', function() { 
     return scope.inputHasFocus = false; 
     }); 
     return scope.$watch('ngModel', function(newValue) { 
     if (!scope.inputHasFocus) { 
      return element.datepicker('update', newValue); 
     } 
     }); 
    } 
    }; 
}); 

То, что я пытаюсь добиться, чтобы установить пользовательский текст в заполнителе шаблона, который он создает, я прохожу этот текст директивы, используя опции, отправляемые в директиву :

$scope.datepickerOptions = {format: 'dd/mm/yyyy', language: 'es', autoclose: true, weekStart: 1, placeholder: 'Birthdate'}; 

выход выше результатов коды в его вводе с заполнителем, показывающим «{{myPlaceholder}}».

Использование функции компиляции вместо статического шаблона было бы намного проще делать то, что я пытаюсь, но так как директива уже написана и не хочет ее испортить, я бы хотел попробовать ее в шаблоне html.

Заранее спасибо

+0

Вместо этого {{myPlaceholder}} используйте {{}} datepickerOptions.placeholder и посмотреть, работает ли он или нет – Reena

ответ

0

myPlaceholder не определено. Вы передаете местозаполнитель в директиву как свойство объекта ngOptions. Используйте вместо этого:

placeholder="{{ngOptions.placeholder}}" 

Вот рабочий пример: http://plnkr.co/edit/WB80J7dHFq2ammmQybMu?p=preview

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