我在我的项目中使用ui bootstrap datepicker,当我从数据库获取数据时,当我使用
时,此日期值Thu Aug 11 2016 00:00:00 GMT+0530 (India Standard Time)
的类型为string
new Date('Thu Aug 11 2016 00:00:00 GMT+0530 (India Standard Time)');
然后它运行正常,我不想使用controller
在new Date();
中进行转换,我实际上想要使用directive
或filter
来实现此转换我能做到吗?我的datepicker字段是:
<input type="text" class="form-control custom-form-control" uib-datepicker-popup="{{format}}" ng-model="moduleName.main.expiryDate" is-open="expiryDateCal.opened" datepicker-options="expiryDateOptions" name="expiryDate" ng-required="true" close-text="Close"/>
答案 0 :(得分:3)
在ng-model
的情况下使用过滤器不是一个好主意。所以我创建了一个将字符串日期转换为Date对象的指令。
运行代码示例以检查work.Hope这有帮助,您只需要根据需要使用ng-model将date
属性添加到HTML标记。
var app = angular.module('app',[]);
app.controller('Ctrl',function($scope,$filter){
$scope.date="Thu Aug 11 2016 00:00:00 GMT+0530 (India Standard Time)";
});
app.directive('date', function(dateFilter) {
return {
require: 'ngModel',
link: function(scope, element, attrs, ngModelController) {
ngModelController.$parsers.push(function(data) {
//convert data from view format to model format
return new Date(data); //converted
});
ngModelController.$formatters.push(function(data) {
//convert data from model format to view format
return new Date(data); //converted
});
}
}
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app" class="widget-content" ng-controller="Ctrl">
<input type="text" ng-model="date" date/>
</div>