在使用过滤器后返回主控制器的值?

时间:2017-04-24 15:50:29

标签: javascript angularjs

我从我的主控制器中调用了一个过滤器,如下所示

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文件返回值时,它将显示为未定义。

有任何线索吗?

1 个答案:

答案 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语句。