我在我的角度应用程序中使用引导日期选择器。但是,当我选择一个日期从那个日期选择器底层ng-model我绑定更新我想要ng-model在一个日期格式’MM / dd / yyyy’。但它每次都使这样的日期
"2009-02-03T18:30:00.000Z"
代替
02/04/2009
我为同一个plunkr link创建了一个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 issues找到了这个解决方案,因此所有的信用到那里的人。