我有一个双元素数组:第一个元素是一个字符串,第二个元素是epoch以来的整数个毫秒数。我可以显示整数毫秒数,但是在尝试获取日期的区域设置字符串时出现错误。
导致时间戳显示为整数的两行代码是:
<div class='timestamp' ng-bind='monologues[session][1]'></div>
<div class='timestamp' ng-bind='new Date(monologues[session][1]).toLocaleString()'></div>
Chrome错误控制台提供:
Error: [$parse:syntax] http://errors.angularjs.org/1.3.0-beta.3/$parse/syntax?p0=Date&p1=is%20an%20unexpected%20token&p2=5&p3=new%20Date(monologues%5Bsession%5D%5B1%5D).toLocaleString()&p4=Date(monologues%5Bsession%5D%5B1%5D).toLocaleString()
at Error (native)
at http://localhost:8000/media/js/angular.min.js:6:456
at $a.throwError (http://localhost:8000/media/js/angular.min.js:164:422)
at $a.parse (http://localhost:8000/media/js/angular.min.js:163:299)
at http://localhost:8000/media/js/angular.min.js:96:31
at k (http://localhost:8000/media/js/angular.min.js:102:163)
at g.$watch (http://localhost:8000/media/js/angular.min.js:103:321)
at http://localhost:8000/media/js/angular.min.js:188:247
at H (http://localhost:8000/media/js/angular.min.js:52:492)
at g (http://localhost:8000/media/js/angular.min.js:46:28) <div class="timestamp ng-binding" ng-bind="new Date(monologues[session][1]).toLocaleString()">
首先,我是否通过尝试绑定计算我想要显示的JavaScript表达式来正确处理事情?
其次,我应该如何处理服务器(按我的选择)给出整数毫秒的内容,并且我想为用户显示相应的格式化区域设置时间?
答案 0 :(得分:5)
您可以在控制器中进行设置:
$scope.$watch('monologues', function() {
$scope.newProp = new Date($scope.monologues[$scope.session][1]).toLocaleString();
});
然后在您的视图中使用它:
<div class='timestamp' ng-bind='newProp'></div>
你也可以为它创建一个过滤器,如下所示:
myApp.filter('toLocale', function () {
return function (item) {
return new Date(item).toLocaleString()
};
});
并在视图中使用它:
<div class='timestamp'>{{ monologues[session][1] | toLocale }}</div>