2016-07-06 52 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