Angularjs过滤器错误:";错误:未知提供程序:textProvider"
Angularjs filter error: "Error: Unknown provider: textProvider"
我为angularjs项目创建了一个自定义过滤器,类似于下面的fiddlehttp://jsfiddle.net/tUyyx/.
myapp.filter('truncate',function(text,length){
var end = "..."
text = text.replace(/'w'S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();});
if (isNaN(length))
length = 23;
if (text.length <= length || text.length - end.length <= length) {
return text;
}
else {
return String(text).substring(0, length-end.length) + end;
}
});
但当我使用过滤器时,我会得到以下错误
Error: Unknown provider: textProvider <- text <- truncateFilter
at Error (<anonymous>)
at http://localhost/javascripts/lib/angular.min.js:28:236
at Object.c [as get] (http://localhost/javascripts/lib/angular.min.js:26:13)
at http://localhost/javascripts/lib/angular.min.js:28:317
at c (http://localhost/javascripts/lib/angular.min.js:26:13)
at Object.d [as invoke] (http://localhost/javascripts/lib/angular.min.js:26:147)
at http://localhost/javascripts/lib/angular.min.js:28:335
at Object.c [as get] (http://localhost/javascripts/lib/angular.min.js:26:13)
at http://localhost/javascripts/lib/angular.min.js:99:481
at o (http://localhost/javascripts/lib/angular.min.js:66:471)
我已经创建了这样的模块。
var myapp = angular.module('myapp', ['ngResource']);
我做错了什么?
如果您查看该jsFiddle中的代码,该filter函数将返回一个以text
等为参数的函数。应该是这样的:
myapp.filter('truncate',function(){
return function(text, length) {
var end = "..."
text = text.replace(/'w'S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();});
if (isNaN(length))
length = 23;
if (text.length <= length || text.length - end.length <= length) {
return text;
}
else {
return String(text).substring(0, length-end.length) + end;
}
}
});
您之所以得到"未知提供者:textProvider",是因为您将text
作为筛选器的参数。这使得Angular寻找一个不存在的名为text
的服务。返回的函数将text
作为参数。
这样想吧,第一个函数(传递到angular.filter中的函数(是首先创建过滤器的函数。该函数在应用程序中只执行一次。该函数的职责是创建另一个函数并返回它,它返回的函数就是您的过滤器。之所以有一个返回函数的函数,是为了让您根据系统返回不同的实现。也许是这样的:
myapp.filter('truncate', function(myService) {
if (myService.someCondition()) {
return function(text, length) {
// return the text as usual
}
} else {
return function(text, length) {
// return the text and do some other things as well
}
}
});
相关文章:
- 铬:“;未捕获的语法错误:意外的标记:"
- 可以设置“;文件名"发生错误时显示的内联脚本标记的
- "未捕获的语法错误:意外的标记}"
- Soundcloud api"未捕获的类型错误:无法读取属性'uri'“未定义”;
- 为什么我会出现此错误"未捕获引用错误:未定义标题;
- "未捕获的语法错误:意外的标记"角度JS
- 内联javascript与"<脚本>"字符串错误地关闭了脚本标记
- jquery validate 1.8.1”;jQuery"是未定义的错误IE8
- "资源不足错误“;当从Chrome控制台重复发出ajax请求时
- "未捕获类型错误/丢弃意外“;因为一句台词而出现?(HTML w/<脚本>)
- 我该如何解决“;未捕获引用错误:谷歌没有定义"?(谷歌地图API)
- "未捕获的语法错误:意外的标记<"当尝试使用谷歌'核心报告API
- 用分隔符分隔具有多个整数值的字符串的Javascript"重试错误的值
- 语法错误:"意外的标记<"在Web控制台中
- "所请求的名称已经作为不同类型的“”存在;HTTP 409响应错误
- "responsed_to|format|“;引发UnknownFormat错误
- 为什么我得到“;错误:预期"同时访问字符串
- "未定义不是函数“;错误jQuery,.replaces,scrollTop
- 我收到一个类型错误,其中包含-"$不是函数“;使用noConflict时
- "属性描述必须是对象“”;错误