【问题标题】:Ng-repeat filter not workingNg重复过滤器不起作用
【发布时间】:2016-03-14 18:10:22
【问题描述】:

我在这里做错了什么?我遵循 AngularJS 中所述的确切格式

   <div ng-repeat="country in (config.countries | filter:'Canada')">
    {{country.name}}
</div>

我也试过

   <div ng-repeat="country in (config.countries| filter:{name:'Canada'})">
    {{country.name}}
</div>

这些都没有过滤我的结果。

感谢您的帮助

更新

json结构

"countries":{
      "Azerbaijan":{"name": "Azerbaijan", "code": "AZ","currency" :"AZN"},
      "Bahamas":{"name": "Bahamas", "code": "BS","currency" :"BSD"},
      "Bahrain":{"name": "Bahrain", "code": "BH","currency" :"BHD"},
      "Bangladesh":{"name": "Bangladesh", "code": "BD","currency" :"BDT"},

【问题讨论】:

    标签: angularjs angularjs-ng-repeat


    【解决方案1】:

    您的过滤器必须与此类似。

    function Main($scope) {
        $scope.countries = {
         "Azerbaijan":{"name": "Azerbaijan", "code": "AZ","currency" :"AZN"},
          "Bahamas":{"name": "Bahamas", "code": "BS","currency" :"BSD"},
          "Bahrain":{"name": "Bahrain", "code": "BH","currency" :"BHD"},
          "Bangladesh":{"name": "Bangladesh", "code": "BD","currency" :"BDT"}
    };
      
    $scope.myFilter = function(countries,filter) {
      var result = {};
        angular.forEach(countries, function(value,key) {
          if (value.name == filter) {
            result[key] = value;
          }
        });
        return result;
      }
    }
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
    <div ng-app>
      <div ng-controller="Main">
        <ul>
          <li ng-repeat="(key,value) in myFilter(countries,'Azerbaijan')">
            {{value.name}}
          </li>
        </ul>
       </div>
    </div>

    【讨论】:

    • 同样的结果,仍然没有过滤。
    • 你能提供更多关于数据的信息吗?
    • 那行得通,如果过滤器为空,我需要调整返回,因为它不会返回任何东西。
    【解决方案2】:

    你能告诉我们config.countries的结构/数据吗?我试过你的第二个 sn-p $scope.config = {}; $scope.config.countries = [{"name": "Canada"}, {"name": "England"}]; 它工作正常。

    【讨论】:

    • 更新了 json 结构的问题。我将对此进行测试并查看结果。
    • 嗯工作,一定是我正在使用的结构。我的第一个例子在这种情况下不起作用吗?因为它搜索所有名为“加拿大”的东西?
    • ng-repeat 的对象结构可能很棘手,我个人建议使用数组 [{ "name" : "&lt;country-name&gt;", "..." : "..." }, ...] 结构,但这只是我的偏好。除此之外,我建议您看一下:stackoverflow.com/questions/19849806/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    相关资源
    最近更新 更多