Javascript 创建封装angular js功能的实用程序模块

Javascript 创建封装angular js功能的实用程序模块,javascript,angularjs,date,filter,utility,Javascript,Angularjs,Date,Filter,Utility,您好,我需要一些指针来理解如何创建一个封装angular js过滤器的实用模块,以便我可以传递要格式化的输入值(2014-11-14T22:51:04.635Z),并从中获得格式化的输出(ng过滤器:2014年11月14日-下午2:51)。目标是利用独立于前端框架的angular Js filter属性。mustache等框架在html中有{{}标记,angular也有,这可能会在html文件中直接使用ng过滤器时引起问题。因此,我尝试使用ngFilters,而不在html中包含它们。因此,我们

您好,我需要一些指针来理解如何创建一个封装angular js过滤器的实用模块,以便我可以传递要格式化的输入值(2014-11-14T22:51:04.635Z),并从中获得格式化的输出(ng过滤器:2014年11月14日-下午2:51)。目标是利用独立于前端框架的angular Js filter属性。mustache等框架在html中有{{}标记,angular也有,这可能会在html文件中直接使用ng过滤器时引起问题。因此,我尝试使用ngFilters,而不在html中包含它们。因此,我们的目标是接受模板中的值,使用ngFilters在JS文件中格式化它们,并将值推回到模板。

您可以轻松地在javascript中调用$filter:

var input = '2014-11-14T22:51:04.635Z';
var format = 'd HHH yyyy - h:mm a';
var output = $filter('date')(new Date(input), format);
如果要转换数组,可以使用.map

// You need to get $filter somewhere
var format = 'd HHH yyyy - h:mm a';
var formatDate = $filter('date'); // Save (input.length - 1) function calls

input = ['2014-11-14T22:51:04.635Z', ...]
var output = input.map(function(in) {
  return formatDate(new Date(in), format);
});
要了解有关angular中的
日期
过滤器的更多信息,请执行以下操作:

我不确定你所做的事情是否值得付出努力。我想知道更改角度的开始和结束符号是否可以完全解决您的问题,以便您可以直接在Html中使用过滤器:

在某些情况下,您需要手动调用javascript中的特定过滤器。您可以使用$filter执行此操作,Angular在使用前需要注入$filter:

现在,我希望您不需要这个或更好,不要在正常的角度应用程序中使用它,但在非常罕见的情况下,您可能需要在非角度上下文中访问角度功能(如$filter)。在这些情况下,您可以使用以下命令访问元素的$scope:

var scope  = $("path to the DOM element").scope();
现在,您可以读取和写入范围,甚至可以更好地从范围调用函数。在这种情况下,您需要在作用域中放置一个筛选器实例,如下所示:

$scope.filterInstance = $filter;
现在,您可以从任何位置调用此过滤器实例,甚至在角度上下文之外: var scope=$(“DOM元素的路径”).scope();
var result=scope.filterInstance(“xyz”)

如果要格式化日期,请使用


这就是我在Angular框架中使用的功能。

如果你想访问AngularJS的某些功能,而不需要将AngularJS引导到你的web应用程序,你可以创建一个独立的注入器

var $injector = angular.injector(['ng']);
然后,您可以从中检索
$filter
服务

$filter = $injector.invoke(['$filter', function ($filter) { return $filter; }]);
并且可以访问任何默认的AngularJS过滤器

var formattedDate = $filter('date')(originalDate, format);

我将编写一个javascript库,它可以执行常见的任务,并将使用它来实现以下目的。。。