toISOString在iPhone中无法使用Cordova Ionic

时间:2014-11-01 22:26:48

标签: javascript ios iphone angularjs cordova

我正在使用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应用程序中运行良好。

2 个答案:

答案 0 :(得分:0)

这是因为您的$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

答案 1 :(得分:0)

这里x是日期字符串。

日期在Safari浏览器中无效,传递字符串,x正在用/ - / g替换为/

代码返回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();
};

})