toISOString 在 iPhone 中无法与 Cordova Ionic 一起使用
Posted
技术标签:
【中文标题】toISOString 在 iPhone 中无法与 Cordova Ionic 一起使用【英文标题】:toISOString not working with Cordova Ionic in iPhone 【发布时间】:2014-11-01 22:26:47 【问题描述】:我正在使用 Cordova Ionic 框架在 android 和 ios 中开发应用程序。在我的要求中,我想在页面中显示月份和日期。我有一个服务日期,我的代码就像这个控制器:
.controller('groupMessagesCtrl', function($scope, $stateParams, Services)
Services.getGroupMessage($stateParams).then(function(data)
$scope.groupMessage = data.data;
);
$scope.toISOString = function(x)
return new Date(x).toISOString();
;
)
在 html 页面中
<div class="list messages_list">
<a class="item item-avatar" ng-repeat="Message in groupMessage" href="#/app/message/Message.CS_MESSAGE_ID">
<!--<p>Message</p>-->
<img src="img/sample/venkman.jpg">
<!-- Adding the user name to the message-->
<h2><span class="date">toISOString(Message.CS_RECEIVED_DATE)</span>Message.CS_FIRST_NAME +" "+Message.CS_LAST_NAME</h2>
<p>Message.CS_MSG</p>
</a>
</div>
仅在 iPhone 应用程序中调用 toISOString()
函数时出现未定义错误。除了 iPhone,在所有浏览器和 Android 应用中都运行良好。
【问题讨论】:
什么是x?细绳?数字?格式?如果它是一个字符串,那么使用 Date 构造函数解析字符串是非常不可靠的。编写自己的解析器非常简单(在 toISOString 函数中再添加一行代码)。 【参考方案1】:这是因为您的 $scope
没有 Message
对象。我有点困惑,你代表Message
对象的代码在哪里,但我假设你的Message
对象是groupMessage
的子对象,所以你的controller
应该是这样的:
Services.getGroupMessage($stateParams).then(function(data)
$scope.groupMessage = data.data; // I assume it's an array
$scope.Message = $scope.groupMessage[0]; // It's an example to defining an `Message` object
);
我举一个例子,从你的数组中创建一个Message
对象,并假设它是一个date
对象。在您的 HTML 中简单地说:
Message.toISOString()
没有创建一个新方法只是为了从一个日期获取ISOString
。
【讨论】:
【参考方案2】:这里的 x 是日期字符串。
日期在 Safari 浏览器中无法通过传递字符串,x 替换为 /-/g 到 /
代码是 return new Date(x.replace(/-/g, "/")).toISOString();
.controller('groupMessagesCtrl', function($scope, $stateParams, Services)
Services.getGroupMessage($stateParams).then(function(data)
$scope.groupMessage = data.data;
);
$scope.toISOString = function(x)
return new Date(x.replace(/-/g, "/")).toISOString();
;
)
【讨论】:
以上是关于toISOString 在 iPhone 中无法与 Cordova Ionic 一起使用的主要内容,如果未能解决你的问题,请参考以下文章
date-fns 中的啥方法相当于 moment().toISOString()
TypeError:formats.dateTimeString.toISOString 不是函数
javascript toISOString() 忽略时区偏移
javascript toISOString()忽略时区偏移量