2014-03-28 54 views
1

這可能聽起來很奇怪,但我有一個看起來像這樣的中繼器。不屬於範圍的模板的角度JS調用函數

<tr ng-repeat="task in tasks"> 
    <td>{{getFriendlyDate(date)}}</td> 
</tr> 

我可以把這個功能放在這個範圍內。

$scope.getFriendlyDate = function(date){ 

    /* Code to convert ISO date to readable date */ 
    return date; 

}; 

這工作正常,但我需要使用此功能在很多的模板,這樣我不想有複製並粘貼到大量的控制器。

一種選擇是創建一個服務來做到這一點,並在每個控制器的作用域上放一個簡單的包裝,但這不會節省我很多時間。

另一種選擇是將函數放在根作用域上,並直接在我的模板中訪問它,但我更喜歡它存在於我的實用程序庫(我有一個使用工廠創建的$ utils庫)。

我想知道是否有可能調用服務直接從模板進行日期轉換?

+0

怎麼在這裏描述你可以嘗試做類似一個自定義的角度指令:http://www.befundoo.com/university /教程/ angularjs-指令教程/。 – crunch

+0

我想我可以,但創建指令似乎是矯枉過正。 – jonhobbs

回答

5

這聽起來像你想要一個過濾器。創建一次過濾網:

angular.module("myModule").filter('friendlyDate', function() { 
    return function(date) { 
      /* Code to convert ISO date to readable date */ 
      return date; 
    }; 
}); 

然後在你的HTML無處不在:

<tr ng-repeat="task in tasks"> 
    <td>{{date | friendlyDate}}</td> 
</tr> 
+0

天才。謝謝。 – jonhobbs