我正在使用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应用程序中运行良好。
答案 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();
};
})