我试图将毫秒转换为javascript日期:
<div ng-app>
<div ng-controller="TodoCtrl">
<div>
<script type="text/javascript">
parseDate({{test}})
</script>
</div>
</div>
</div>
function TodoCtrl($scope) {
$scope.test = "1429831430363"
}
function parseDate(date) {
var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
return months[date.getUTCMonth()] + ' ' + date.getUTCDate();
}
http://jsfiddle.net/U3pVM/15141/
但是在控制台上抛出了错误Uncaught SyntaxError: Unexpected token {
。
使用angularJS参数从div调用函数的正确方法是什么?
答案 0 :(得分:2)
使用此代码:请参阅fiddle
<div ng-app>
<div ng-controller="TodoCtrl">
<div>
{{parseDate(test)}}
</div>
</div>
</div>
function TodoCtrl($scope) {
$scope.test = "1429831430363"
$scope.parseDate=function(date) {
var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
return months[(new Date()).getUTCMonth()] + ' ' + (new Date()).getUTCDate();
}
}
答案 1 :(得分:1)
格式化日期的更优雅的解决方案是创建自定义过滤器,因为它更干净,您可以在任何地方重复使用它:
过滤器:
myApp.filter('myMillisecondsToUTCDate', [function() {
return function(milliseconds) {
var date = new Date(milliseconds);
var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
return months[date.getUTCMonth()] + ' ' + date.getUTCDate();
};
}]);
控制器:
myApp.controller('MyCtrl', function($scope, $filter) {
$scope.testDate = 1429831430363;
// Re-Use the filter everywhere
$scope.formattedDate = $filter('myMillisecondsToUTCDate')($scope.testDate);
});
HTML:
<div ng-controller="MyCtrl">
Format a date using a custom filter: {{testDate | myMillisecondsToUTCDate}}<br/>
Formatted date {{formattedDate}}
</div>
答案 2 :(得分:0)
您可以使用angular.element
和jqLite.scope
来获取范围对象。请注意,角度和您的应用需要初始化才能实现,因此您最好在回调中调用parseDate
。
parseDate(
angular
.element('[ng-controller="TodoCtrl"]') // but you'd rather give it an ID / class name / whatever
.scope()
.test
);
答案 3 :(得分:0)
修改代码:
我们不需要div中的脚本,因为它们仍然是单独评估的。
在angularjs控制器中定义了parseDate,如果这是非常通用的,请将其定义为服务/工厂并在任何地方使用它。这是有角度的方式。
您的测试是一个字符串。它没有getUTCMonth函数,它应该是一个数字,以便它可以转换为日期,以便我们可以使用上述函数。
以下是经过修改的代码:
<div ng-app>
<div ng-controller="TodoCtrl">
<div>
{{parseDate(test)}}
</div>
</div>
</div>
控制器:
function TodoCtrl($scope) {
$scope.test = 1429831430363;
$scope.parseDate = function(date) {
var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
date = new Date(date);
return months[date.getUTCMonth()] + ' ' + date.getUTCDate();
}
}
看到这个小提琴:http://jsfiddle.net/U3pVM/15146/