AngularJS:在$ scope中搜索匹配值

时间:2014-12-15 20:10:03

标签: javascript angularjs angularjs-scope

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

$scope.countries = [
        {
            "key": "NL",
            "value": "Netherlands"
        },
        {
            "key": "BE",
            "value": "Belgium"
        },
        {
            "key": "TR",
            "value": "Turkey"
        },
        {
            "key": "PL",
            "value": "Poland"
        }
    ]

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

 {{formulier.country | fetchname }} 

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

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

我必须对我的过滤器进行哪些更改才能在AngularJS中使用它?我如何获得NL'被'荷兰'取代?

1 个答案:

答案 0 :(得分:5)

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

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

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

{{ formulier.country | fetchname:countries }}