У меня есть эта директива:
.directive('myDate', ['$timeout', '$rootScope', '$locale',
function ($timeout, $rootScope, $locale) {
'use strict';
return {
restrict: 'A',
scope: {
customDate: '='
},
// the rest part of directive...
};
}
]);
Я знаю, как передать переменную директиве, которая ограничена элементом. Но этот подход не работает, когда директива указана как атрибут:
<div class="input-group date" my-date custom-date="testDate">
<input type="text" class="form-control" ng-model="dateFrom" />
</div>
Где:
scope.testDate= new Date('2015-01-13')
Как я могу заставить его работать?
По большей части ваш код должен работать. Здесь находится рабочий плункер для отдыха. С ОП было всего несколько мелких проблем. В контроллере свойство, связанное с атрибутом директивы, должно быть с тем же именем (scope.date
должно быть scope.testDate
) и т.д.
Контроллер:
app.controller('Ctrl', function($scope) {
$scope.testDate = new Date('2015-01-13')
});
Директива:
app.directive('myDate', ['$timeout', '$rootScope',
function ($timeout, $rootScope) {
'use strict';
return {
restrict: 'A',
scope: {
customDate: '='
},
link(scope) {
console.log(scope.customDate);
}
};
}
]);
HTML:
<body ng-app="myApp">
<div ng-controller="Ctrl">
<div class="input-group date" my-date custom-date="testDate">
<input type="text" class="form-control" ng-model="dateFrom" />
</div>
</div>
</body>
date
иtestDate
также были моей ошибкой при копировании / вставке / переименовании здесь. Это все еще не работает для меня. Но теперь я знаю, что этот подход правильный благодаря вашему рабочему примеру, и я проверю причину в других частях скрипта.