如何从自定义过滤器内部调用控制器功能?

时间:2018-01-03 10:53:16

标签: angularjs

我在控制器中有这样的功能。

cl.translateCall = function () {
$http.get(`${API_URL}/langChange/` + selectedLanguage).
then(function onSuccess(response) {
      input = response.data; 
      console.log(input)
}).
  catch(function onError(response) {
  console.log(response)
});   
 }

我在这个模块中有一个自定义过滤器

   .filter('languageTranslate',['$http', function($http) {  

   return function(input) {
    if(selectedLanguage != null){

    /*want to call controller function*/

      }else{   
            return input;  
      } 
  }


}]);

如何在Angular JS自定义过滤器中调用上述控制器功能?我是Angular JS的新手。

1 个答案:

答案 0 :(得分:1)

好吧,你可以将范围传递给过滤器。我不知道你如何使用上面的代码,但如果你理论上有:

{{ someVar | languageTranslate }}

然后,您可以通过添加:this

来传递当前范围
{{ someVar | languageTranslate:this }} 

并调用这样的范围方法

return function(input, scope) {
  if (scope.selectedLanguage != null) {
    scope.functionName()
  } else {   
    return input 
  } 
}