【问题标题】:toISOString not working with Cordova Ionic in iPhonetoISOString 在 iPhone 中无法与 Cordova Ionic 一起使用
【发布时间】: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 函数中再添加一行代码)。

标签: javascript ios iphone angularjs cordova


【解决方案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();
    };
    

    })

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-12
      • 1970-01-01
      • 2020-01-07
      • 2018-12-09
      • 1970-01-01
      • 2015-10-29
      • 1970-01-01
      相关资源
      最近更新 更多