使 AngularUI 日期选择器成为实际指令
Making AngularUI datepicker an actual directive
我正在尝试将 angular-ui's date-picker 变成一个实际的指令。
我可以用正确的模型和格式在页面上显示它,但切换对我不起作用(试图通过属性命名)。
这是我的代码:
我的 html
<date-picker data-format="dd/MM/yyyy" data-model-name="dateReviewed" data-ng-model="oneWMS.dateReviewed" data-status="statusDateReviewed" data-opened="openDateReviewed"></date-picker>
我的指令
function datePicker() {
return {
restrict: 'AE',
require: 'ngModel',
scope: {
format: '@',
mod: '=ngModel',
status: '@',
opened: '@'
},
template: '<div class="input-group">' +
'<input type="text" class="form-control" datepicker-popup="{{format}}" data-ng-model="mod" is-open="status.opened" ng-required="true" close-text="Close" />' +
'<span class="input-group-btn">' +
'<button type="button" class="btn btn-default" ng-click="opened($event)"><i class="glyphicon glyphicon-calendar"></i> </button>' +
'</span>' +
'</div>',
link: function(scope, iElement, iAttrs) {
// all the directive code
console.log(iAttrs.format); // dd/MM/yyyy
console.log(iAttrs.ngModel); // oneWMS.dateReviewed
console.log(iAttrs.status); // statusDateReviewed
console.log(iAttrs.opened); // openDateReviewed
console.log(iAttrs.modelName); // dateReviewed
var modelStatusDate = iAttrs.status;
var modelOpenDate = iAttrs.opened;
var modelName = iAttrs.modelName;
scope.today = function() {
scope.modelName = new Date();
scope.dateApproved = new Date();
scope.today();
scope.clear = function () {
scope.modelName = null;
};
scope.modelOpenDate = function($event) {
scope.modelStatusDate.opened = true;
};
scope.modelStatusDate = {
opened: false
};
scope.getDayClass = function(date, mode) {
if (mode === 'day') {
var dayToCheck = new Date(date).setHours(0,0,0,0);
for (var i=0;i<scope.events.length;i++){
var currentDay = new Date(scope.events[i].date).setHours(0,0,0,0);
if (dayToCheck === currentDay) {
return scope.events[i].status;
}
}
}
return '';
};
} // link
} // return
} // picker
}
不知道是只打开选择器不行还是日期选择也会失败
我使用 angularui 日期选择器制作了自定义日期指令。看看吧,也许对你有用。这是 plunkr url 。 http://plnkr.co/edit/FDigEjyMYm5SVYnQyZGp.
如果您使用 Angular 和 Bootstrap,我强烈建议您使用 Angular UI Bootstrap。
其他 Angular UI 库未得到积极维护。
我正在尝试将 angular-ui's date-picker 变成一个实际的指令。
我可以用正确的模型和格式在页面上显示它,但切换对我不起作用(试图通过属性命名)。
这是我的代码: 我的 html
<date-picker data-format="dd/MM/yyyy" data-model-name="dateReviewed" data-ng-model="oneWMS.dateReviewed" data-status="statusDateReviewed" data-opened="openDateReviewed"></date-picker>
我的指令
function datePicker() {
return {
restrict: 'AE',
require: 'ngModel',
scope: {
format: '@',
mod: '=ngModel',
status: '@',
opened: '@'
},
template: '<div class="input-group">' +
'<input type="text" class="form-control" datepicker-popup="{{format}}" data-ng-model="mod" is-open="status.opened" ng-required="true" close-text="Close" />' +
'<span class="input-group-btn">' +
'<button type="button" class="btn btn-default" ng-click="opened($event)"><i class="glyphicon glyphicon-calendar"></i> </button>' +
'</span>' +
'</div>',
link: function(scope, iElement, iAttrs) {
// all the directive code
console.log(iAttrs.format); // dd/MM/yyyy
console.log(iAttrs.ngModel); // oneWMS.dateReviewed
console.log(iAttrs.status); // statusDateReviewed
console.log(iAttrs.opened); // openDateReviewed
console.log(iAttrs.modelName); // dateReviewed
var modelStatusDate = iAttrs.status;
var modelOpenDate = iAttrs.opened;
var modelName = iAttrs.modelName;
scope.today = function() {
scope.modelName = new Date();
scope.dateApproved = new Date();
scope.today();
scope.clear = function () {
scope.modelName = null;
};
scope.modelOpenDate = function($event) {
scope.modelStatusDate.opened = true;
};
scope.modelStatusDate = {
opened: false
};
scope.getDayClass = function(date, mode) {
if (mode === 'day') {
var dayToCheck = new Date(date).setHours(0,0,0,0);
for (var i=0;i<scope.events.length;i++){
var currentDay = new Date(scope.events[i].date).setHours(0,0,0,0);
if (dayToCheck === currentDay) {
return scope.events[i].status;
}
}
}
return '';
};
} // link
} // return
} // picker
}
不知道是只打开选择器不行还是日期选择也会失败
我使用 angularui 日期选择器制作了自定义日期指令。看看吧,也许对你有用。这是 plunkr url 。 http://plnkr.co/edit/FDigEjyMYm5SVYnQyZGp.
如果您使用 Angular 和 Bootstrap,我强烈建议您使用 Angular UI Bootstrap。
其他 Angular UI 库未得到积极维护。