我有AngularJS v1.2.19。我尝试在我的项目中使用
我已经为编队日期创建了过滤器。
var app = angular.module('commentApp', []).filter("dateformat", function ($filter) {
return function (input) {
if (input) {
try {
var date = $filter('CommentDate')(new Date(input), 'dd MMM yyyy');
return date;
} catch (e) {
console.log(e);
}
}
}
});
并致电
<time>{{comment.CommentDate|dateformat }}</time>
我有错误
错误:[$ injector:unpr]未知提供者:CommentDateFilterProvider&lt; - CommentDateFilter http://errors.angularjs.org/1.2.19/ $注射器/ unpr?P0 = CommentDateFilterProvider%20%3 C-%20CommentDateFilter
答案 0 :(得分:0)
表示您的过滤器CommentDate
不存在
var date = $filter('CommentDate')(new Date(input), 'dd MMM yyyy');
使用角度过滤器格式化日期https://docs.angularjs.org/api/ng/filter/date
<time>{{comment.CommentDate|date:'dd MMM yyyy'}}</time>
答案 1 :(得分:0)
Angular具有依赖注入。它知道要传递给你的函数的东西并不是“神奇的”:它会查看你接受的参数的名称,并试图找到与它们匹配的东西。编写代码的方式,Angular认为你希望它找到一个CommentDateFilter提供者(而且没有一个)。
这是一个只有基本要素的简化版本:
var app = angular.module('commentApp', []).filter("dateformat", function() {
return function(input) {
return new Date(input).toLocaleFormat('dd MMM yyyy');
}
});
我在这里用toLocaleFormat()作弊 - 这在所有浏览器中都不起作用,因为它是新的。我感觉你的问题实际上并不是格式化日期(因为AngularJS已经有一个非常好的日期过滤器:https://docs.angularjs.org/api/ng/filter/date。我想你真正想知道的是如何让实际的过滤器工作,以及上面的例子会给你一个建立你想要的东西的起点。
答案 2 :(得分:0)
请参见此处:http://jsbin.com/taqiq/1/edit
这是您的过滤器的代码
app.filter('mydate' ,function($filter){
return function(input){
input =input.replace(/\//g, '');
var mydate = Date.parse(Date(input));
return $filter('date')(mydate, 'dd MMM yyyy');
};
});