В то время как я создал следующий JQuery DateTimePicker плагин, завернутый в угловой директиве, которая работает отлично:Как получить несколько директив jQuery/datetimepicker для совместной работы?
http://jsfiddle.net/edwardtanguay/x9oa0u6n/2 (один экземпляр директивы, работа)
Я, конечно, хочу эта директиву, чтобы быть в состоянии назвать несколько раз на странице, но даже несмотря на то, что я сделал идентификатор переменной, несколько элементов управления не работают по какой-то причине, я подозреваю, что это связано с тем, что мне нужно также изменить значение параметра dp.change
, но я не уверен, что именно это имеет в виду.
http://jsfiddle.net/x9oa0u6n/4 (два экземпляра директивы, НЕ РАБОТАЕТ)
Как я могу получить эту директиву, чтобы работать независимо друг от друга несколько раз на странице?
<script type="text/ng-template" id="templateCalendarPicker">
<div class='input-group date datepicker_format' id="{{dpid}}" style="width:{{width}}px">
<input type='text' class="form-control" />
<span class="input-group-addon">
<span class="glyphicon glyphicon-calendar"></span>
</span>
</div>
</script>
<div ng-controller="mainController">
<div calendar-picker width="200" date="date1" dpid="d1"></div>
<div>The first date is <b>{{date1}}</b>.</div>
</div>
<div ng-controller="mainController">
<div calendar-picker width="200" date="date2" dpid="d2"></div>
<div>The second date is <b>{{date2}}</b>.</div>
</div>
angular.module('myApp', [])
.controller('mainController', function($scope) {
$scope.date1 = '2015-09-01';
$scope.date2 = '2015-09-30';
})
.directive('calendarPicker', function() {
var controller = function ($scope) {
var vm = this;
$('#datepicker').datetimepicker({
format:'YYYY-MM-DD',
defaultDate: new Date($scope.date)
});
var elemId = '#'+$scope.dpid;
console.log(elemId);
$(document).on('dp.change', elemId, function (a) {
var selected_date = moment(a.date._d).format('YYYY-MM-DD');
$scope.date = selected_date;
$scope.$apply();
});
$scope.$on('$destroy', function() {
$('#datepicker').data("DateTimePicker").destroy();
});
};
return {
restrict: 'A',
scope: {
date : '=',
width : '@',
dpid : '@'
},
controller: controller,
controllerAs: 'vm',
bindToController: true,
templateUrl: 'templateCalendarPicker'
};
});
место datetimepicker на элементе не на селекторе с 'id'..Вы можете посмотреть это http://stackoverflow.com/a/29194068/2435473 –
На основе вашего плункера (http://plnkr.co/ edit/sgjWuQNUc8xExgbgucC5), я установил jsfiddle (http://jsfiddle.net/edwardtanguay/7wssszop/1), но он говорит: 'element.datetimepicker не является функцией', есть ли что-то еще, что мне нужно добавить? –
Вам нужно загрузить jquery перед angularjs .. посмотрите здесь http://jsfiddle.net/mkn2tuae/ –