2014-11-01 186 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