gpt4 book ai didi

javascript - Angularjs 过滤器错误 : "Error: Unknown provider: textProvider"

转载 作者:可可西里 更新时间:2023-11-01 01:21:56 26 4
gpt4 key购买 nike

我为我的 angularjs 项目创建了一个自定义过滤器,类似于以下 fiddle http://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 中的代码,该过滤器函数会返回一个将 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;
}
}
});

你得到“Unknown provider: 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
}
}
});

关于javascript - Angularjs 过滤器错误 : "Error: Unknown provider: textProvider",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15062113/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com