AngularJS:在$ scope中搜索匹配值

Ruu*_*Kok 0 javascript angularjs angularjs-scope

我有一个页面,我想打印一些标签的值,我已经在JSON对象中:

$scope.countries = [
        {
            "key": "NL",
            "value": "Netherlands"
        },
        {
            "key": "BE",
            "value": "Belgium"
        },
        {
            "key": "TR",
            "value": "Turkey"
        },
        {
            "key": "PL",
            "value": "Poland"
        }
    ]
Run Code Online (Sandbox Code Playgroud)

所以我在范围内有国家/地区代码,并希望使用过滤器来替换实际国家/地区名称的代码.因此我实现了这样的过滤器:

 {{formulier.country | fetchname }} 
Run Code Online (Sandbox Code Playgroud)

我正在尝试构建的过滤器应该在上面的国家/地区范围内搜索国家/地区代码(密钥),并返回这些(值)的国家/地区名称.我开始使用这个过滤器,但不幸的是我没有让它工作.

app.filter('fetchname', function() {
    return function(input, all) {
        angular.forEach($scope.countries, function(key, value) {
            if (key === input) {
                return value;
            }
        });
    }
  });
Run Code Online (Sandbox Code Playgroud)

我必须对我的过滤器进行哪些更改才能在AngularJS中使用它?如何将'NL'替换为'荷兰'?

小智 5

$scope过滤器中的代码不会是一样的$scope,从您的JSON对象(我假设,你没有张贴所有的代码).您应该更新过滤器以获取参数,特别是用于匹配传递给过滤器的值的国家/地区列表.

app.filter('fetchname', function() {
  return function(input, countries) {
    angular.forEach(countries, function(value, key) {
      if (key === input) {
        return value;
      }
    });
  });
Run Code Online (Sandbox Code Playgroud)

您可以在HTML中使用它(假设countries为当前范围填充):

{{ formulier.country | fetchname:countries }}
Run Code Online (Sandbox Code Playgroud)