我在我的角度应用程序中使用引导日期选择器。但是,当我从绑定的该日期选择器基础ng模型中选择一个日期时,该日期会更新,我希望该ng模型以一种“ MM / dd / yyyy”日期格式显示。但是每次都会这样约会
"2009-02-03T18:30:00.000Z"
代替
02/04/2009
我为相同的plunkr链接创建了一个plunkr
我的HTML和控制器代码如下
<!doctype html> <html ng-app="plunker"> <head> <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.10/angular.js"></script> <script src="//angular-ui.github.io/bootstrap/ui-bootstrap-tpls-0.11.0.js"></script> <script src="example.js"></script> <link href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet"> </head> <body> <div ng-controller="DatepickerDemoCtrl"> <pre>Selected date is: <em>{{dt | date:'MM/dd/yyyy' }}</em></pre> <p>above filter will just update above UI but I want to update actual ng-modle</p> <h4>Popup</h4> <div class="row"> <div class="col-md-6"> <p class="input-group"> <input type="text" class="form-control" datepicker-popup="{{format}}" ng-model="dt" is-open="opened" min-date="minDate" max-date="'2015-06-22'" datepicker-options="dateOptions" date-disabled="disabled(date, mode)" ng-required="true" close-text="Close" /> <span class="input-group-btn"> <button type="button" class="btn btn-default" ng-click="open($event)"> <i class="glyphicon glyphicon-calendar"></i></button> </span> </p> </div> </div> <!--<div class="row"> <div class="col-md-6"> <label>Format:</label> <select class="form-control" ng-model="format" ng-options="f for f in formats"><option></option></select> </div> </div>--> <hr /> {{dt}} </div> </body> </html>
角度控制器
angular.module('plunker', ['ui.bootstrap']); var DatepickerDemoCtrl = function ($scope) { $scope.open = function($event) { $event.preventDefault(); $event.stopPropagation(); $scope.opened = true; }; $scope.dateOptions = { formatYear: 'yy', startingDay: 1 }; $scope.format = 'dd-MMMM-yyyy'; };
在此先感谢您审查我的问题。
更新
我在下面调用发布数据的方法,VAR是大小为900的数组,其中包含日期选择器变量。
public SaveCurrentData(formToSave: tsmodels.ResponseTransferCalculationModelTS) { var query = this.EntityQuery.from('SaveFormData').withParameters({ $method: 'POST', $encoding: 'JSON', $data: { VAR: formToSave.VAR, X: formToSave.X, CurrentForm: formToSave.currentForm, } }); var deferred = this.q.defer(); this.manager.executeQuery(query).then((response) => { deferred.resolve(response); }, (error) => { deferred.reject(error); }); return deferred.promise; }
尽管已经发布了类似的答案,但我还是想为我提供最简单,最干净的解决方案。 假设您使用的是AngularUI日期选择器, 并且ng- Model的初始值未格式化,只需在项目中添加以下指令即可解决此问题:
angular.module('yourAppName') .directive('datepickerPopup', function (){ return { restrict: 'EAC', require: 'ngModel', link: function(scope, element, attr, controller) { //remove the default formatter from the input directive to prevent conflict controller.$formatters.shift(); } } });
我在Github AngularUI问题中找到了该解决方案,因此所有的荣誉都归功于那里的人们。