Угловой JS фактически предоставляет специальный контроллер для взаимодействия с ngModel
, который вы можете использовать внутри своих директив; просто добавьте require: 'ngModel'
к определению вашей директивы.
Это дает вам четвертый параметр вашей функции link
, который вы запросили у контроллера в require
- в данном случае экземпляр of ngModelController
. Он имеет метод $setViewValue
вы можете использовать, чтобы установить значение модели:
app.directive('datepicker', function() {
return {
require: 'ngModel',
link: function(scope, el, attr, ngModel) {
$(el).datepicker({
onSelect: function(dateText) {
scope.$apply(function() {
ngModel.$setViewValue(dateText);
});
}
});
}
};
});
Прелесть ngModelController
он автоматически заботится о проверке и форматирование (в случае конкретного входа type
) и интеграции с такими вещами, как ngChange
callbacks; проверить this example: http://jsbin.com/ufoqan/6/edit
Хороший ответ. Обратите внимание, что здесь есть текущий пользовательский идентификатор jquery: https://github.com/angular-ui/ui-date Чтение исходного кода поможет понять, как работает ngModelController –
Очень полезно знать. Спасибо Брэндон! – Jonah
Вау спасибо Брэндон.Очень полезно. Директивы наверняка сложны ... – skaterdav85