尝试附加带有日期的GET URL,但需要采用格式" yyyyMMdd00"。
尽管在这里尝试了所有解决方案:
AngularJS - convert dates in controller
和
Binding value to input in Angular JS
我只能以中等格式制作日期:dateFrom%3DFri + Feb + 24 + 2017 + 00%3A00%3A00 + GMT%252B0000 +%28GMT + Standard + Time%29
或者什么都没有出现。
HTML(h3生成我要添加到我的网址的内容):
<ion-content class="item-input">
<label class="item-input">
<span class="input-label">Date From</span>
<input type="date" ng-model="dateFrom">
</label>
<h3>{{dateFrom | date: "yyyyMMdd00"}}</h3>
<a ui-sref="date({dateFrom:dateFrom})">Go</a>
</ion-content>
控制器
.controller("DateCtrl", function ($scope, $stateParams, dateService) {
$scope.events = dateService.getEvents($stateParams.dateFrom).then(function (events) {
$scope.events = events;
});
厂:
.factory('dateService', function ($http) {
var events = [];
return {
getEvents: function (date) {
var params = {
dateFrom: date
}
return $http.get('URL', { params: params }).then(function (response) {
events = response.data.events;
return response.data.events;
});
最后是路由:
.state('date', {
url: "/date/:dateFrom",
templateUrl: "templates/Date.html",
controller: "DateCtrl"
})
答案 0 :(得分:1)
使用$urlMatcherFactoryProvider.type
使用type,您可以访问控制器中的解码对象等。
稍微更新状态声明:
.state('date', {
url: "/date/{dateFrom:dateType}", // Use type "dateType" here
templateUrl: "templates/Date.html",
controller: "DateCtrl"
})
将此包含在路线文件中:
$urlMatcherFactoryProvider.type('dateType', {
encode: function(date) {
// Convert date object to URL format
var format = 'yyyyMMdd00';
return $filter('date')(date, format);
},
decode: function(dateStr) {
// Convert URL date to date object
var year = parseInt(dateStr.slice(0, 4));
var month = parseInt(dateStr.slice(4, 6));
var day = parseInt(dateStr.slice(6, 8));
var date = new Date(year, month, day)
return date;
},
is: function(item) {
return true;
}
});
此外,如果项目中已包含日期,请使用moment.js
来序列化和反序列化日期。