2016-07-06 39 views
2

我试图评估moment()花括号内{{}}要显示日期:在角视图使用moment.js

{{ moment().date(timeslot.start.value.month) 
      .month(timeslot.start.value.dayOfMonth - 1) 
      .format("MMMM Do") 
}} 

然而,这是不渲染HTML。 monthdayOfMonth都已设置,并且moment.js被正确提取,因为如果我尝试console.log()某些日期,如moment().date(6).month(6).format("MMMM Do"),则它会按预期返回"July 6th"

我错过了一些明显的东西吗?

回答

0

尝试在你的控制器分配值到$范围变量,然后把它包在大括号

在您的控制器中:

$scope.time = moment().date(timeslot.start.value.month) 
     .month(timeslot.start.value.dayOfMonth - 1) 
     .format("MMMM Do") 

在你的HTML:

{{time}} 

基本上只有附着到“这个”或“$范围”的东西可以通过双大括号或NG绑定的视图访问。您必须将其分配给该视图所附带的控制器范围。

将当前操作权限放在大括号中并不会很好,因为我不认为Angular可以插入外部库及其类似方法,但它可以做更简单的选项,就像您可能已经看到的那样。

+0

不是这个确切的,但是这给了我一个想法。我已经有一个'helpers'对象,其helper函数挂接到根作用域。我刚添加了另一个返回'moment()'的函数。真的很笨拙,因为我不能使用'moment()'(和链式方法)以外的任何东西,但它的确有用。 – dabadaba

2

你有没有看过一个角度包装angular-moment? 去包装的路线始终保存在jQuery和Javascript库方面的一些头痛。

这里是一个plunker example based on your code.

<body ng-controller="MainCtrl"> 
    <p>Hello {{name}}!</p> 
    <span>{{myDate| amUtc | amLocal | amDateFormat:'MMMM Do'}}</span> 
</body> 

在应用程序中我给你指明MyDate当前日期:

var app = angular.module('plunker', ['angularMoment']); 

app.controller('MainCtrl', function($scope) { 
    $scope.name = 'World'; 
    $scope.myDate = new Date(); 
}); 
+0

@devonJS谢谢你的帮助!我仍在努力处理格式。 – Gregori