2014-11-01 38 views
0

我正在使用Cordova Ionic框架在Android和iOS上开发应用程序。在我的要求中,我想在页面中显示月份和日期。我从服务的日期我的代码是这样的控制器:toISOString不能在iPhone中使用科尔多瓦Ionic

.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应用都运行良好。

+0

什么是* X *?串?数?格式?如果它是一个字符串,那么使用Date构造函数解析字符串是非常不可靠的。编写自己的解析器非常简单(在* toISOString *函数中多了一行代码)。 – RobG 2014-11-01 23:07:47

回答

0

这里x是日期字符串。

日期是不是在Safari浏览器正在与传递字符串,x是用/替换 - /克至/

代码返回新的日期(x.replace(/ - /克,“/” ))toISOString();

.controller( 'groupMessagesCtrl',函数($范围,$ stateParams,服务){

Services.getGroupMessage($stateParams).then(function(data){ 
    $scope.groupMessage = data.data; 
}); 

$scope.toISOString = function(x){ 
    return new Date(x.replace(/-/g, "/")).toISOString(); 
}; 

})

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