Я пытаюсь написать общую директиву для своих угловых приложений, которая превращает поле ввода в jquery timepicker.Угловая привязка данных директивы не работает должным образом
У меня есть два поля ввода: fromTime и toTime, и я хочу обновить toTime, когда изменяется значение fromTime.
Мой код выглядит следующим образом:
HTML
<input type="text"
time-picker="{ timeFormat: 'H:i'}"
class="input-block-level"
name="fromTime"
ng-model="filter.fromTime"
ng-change="update()"
/>
<input type="text"
time-picker="{ timeFormat: 'H:i'}"
class="input-block-level"
name="toTime"
ng-model="filter.toTime"
ng-change="update()"
/>
ДИРЕКТИВА
sharedServices.directive('TimePicker', function() {
return {
restrict: 'A',
scope: {
time: "=ngModel"
},
link: function(scope, element, attrs) {
//Initialize the timepicker
$(element).timepicker(scope.$eval(attrs.TimePicker));
//watch for changes
scope.$watch('time', function(stuff) {
console.log('some change', stuff);
});
}
};
});
sharedServices ВКЛЮЧЕНЫ
var roomsApp = angular.module("roomsApp", ["ngResource",'ui', 'sharedServices','ui.bootstrap']).config(function($routeProvider) { ...
Направляющие нагрузки и элемент времени инициализируются и прикрепляются к элементу, но при изменении полей ввода ничего не происходит, даже событие изменения ng, которое привязано к элементу. Поля ввода также пусты при загрузке страницы, даже если модель настроена на то, чтобы содержать некоторое значение в контроллере приложения. Может ли кто-нибудь пролить свет на этот вопрос?
* Обновление http://plnkr.co/edit/t3BzShezEdh29ZAlI8ZI?p=preview Это демонстрирует мою проблему. Ничто не консольная регистрируется при изменении даты
Покажите нам код, в котором включена директива. Я вижу несколько вещей, которые действительно странные. – TheHippo
@ TheHippo, сделано. Инициализируются директивные нагрузки и истечет время. Но привязка между областью действия и директивой работает некорректно. – Bjarki
Пожалуйста, продолжайте использовать ngModelController, но не как опцию вашей изолированной области, установите ее как необходимый контроллер, введенный в качестве четвертого аргумента вашей функции linkibg, перегружая свой метод $ render, используя свой $ viewValue и используя его $ setViewValue на вашем Изменения виджета пользовательского интерфейса в сочетании с $ apply вызвали область. – lib3d