2014-03-28 55 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