2017-04-24 80 views
1

我叫从我的主控制器的过滤器这样添加过滤器后返回主控制器的值?

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

问题:

与实际的过滤代码的问题是,它只是处理字符串也不回,你需要让你的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声明。

+0

这就是它!感谢您解释:) – Robin

+0

不客气。 –