我从我的主控制器中调用了一个过滤器,如下所示
apples = $filter('toTitleCase')(pears);
一切都井井有条,意味着没有任何依赖关系可以覆盖,一切都被宣告。
然后,我还可以在名为filter.js的文件中从外部访问我的过滤器。
app.filter( 'toTitleCase', function(){
return function(x){
x.replace(/\w\S*/g, function(txt) {
return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
});
}
});
它的作用是,它需要一些输入文本并将首字母打印为大写。
问题是,当主控制器访问filter.js时,它需要正确的输入,并且通过控制台日志,我能够看到它确实使第一个字母大写。但是当filter.js文件返回值时,它将显示为未定义。
有任何线索吗?
答案 0 :(得分:0)
<强>问题:强>
您的实际过滤器代码的问题在于它只是处理字符串而不是返回它,您需要使filter
回调返回已处理的字符串。
这应该是你的代码:
app.filter('toTitleCase', function() {
return function(x) {
return x.replace(/\w\S*/g, function(txt) {
return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
});
}
});
<强>解释强>
你正在返回一个函数,它只处理一个字符串并且uppercase
它的第一个字符但是没有返回它,你需要在这个函数中有一个return
语句。