Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ng repeat中的Angular Js对象过滤器_Javascript_Angularjs_Json - Fatal编程技术网

Javascript ng repeat中的Angular Js对象过滤器

Javascript ng repeat中的Angular Js对象过滤器,javascript,angularjs,json,Javascript,Angularjs,Json,如何基于对象值(如1、2或3)进行过滤 我正在尝试过滤我的json,它看起来类似于names对象 这是我的代码,我试图应用过滤器,但它不工作 <!DOCTYPE html> <html> <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> <body> <div ng-app="myApp" ng-

如何基于对象值(如1、2或3)进行过滤

我正在尝试过滤我的json,它看起来类似于names对象

这是我的代码,我试图应用过滤器,但它不工作

<!DOCTYPE html>
<html>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<body>

<div ng-app="myApp" ng-controller="namesCtrl">

<ul>
  <li ng-repeat="x in names ">
    {{ x.name }}
  </li>
</ul>

</div>

<script>
angular.module('myApp', []).controller('namesCtrl', function($scope) {
    $scope.names = {
  "1": {
       "name": "some"
  },
  "2": {
       "name": "values"
  },
  "3": {
        "name": "are"
  },
  "4": {
       "name": "there"
  },
  "5": {
        "name": "here"
  }
}
});
</script>

</body>
</html>

  • {{x.name}
角度.module('myApp',[]).controller('namesCtrl',function($scope){ $scope.names={ "1": { “姓名”:“一些” }, "2": { “名称”:“值” }, "3": { “名称”:“是” }, "4": { “名称”:“有” }, "5": { “名称”:“此处” } } });
我认为您无法筛选属性名称。我假设这些属性名是您要筛选的某种ID。然后,您的数据结构应该反映这一点,并如下所示:

$scope.names = [
    { id: "1", name: "some" },
    { id: "2", name: "values" },
    { id: "3", name: "are" },
    { id: "4", name: "there" },
    { id: "5", name: "here" }
]
<ul>
  <li ng-repeat="x in names | filter: { id: searchId } >
    {{ x.name }}
  </li>
</ul>
然后您可以像这样进行过滤:

$scope.names = [
    { id: "1", name: "some" },
    { id: "2", name: "values" },
    { id: "3", name: "are" },
    { id: "4", name: "there" },
    { id: "5", name: "here" }
]
<ul>
  <li ng-repeat="x in names | filter: { id: searchId } >
    {{ x.name }}
  </li>
</ul>

    filter和orderBy不处理对象属性,仅处理数组。话虽如此,我想我找到了一个你会喜欢的解决方案:

    <!DOCTYPE html>
    <html>
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
    <body>
    
    <div ng-app="myApp" ng-controller="namesCtrl">
    
    <input type="text" ng-model="searchText"/>
    <ul ng-init="nameArray=objArray(names)">
      <li ng-repeat="x in nameArray | filter:searchText">
        {{x.value.name}}
      </li>
    </ul>
    
    </div>
    
    <script>
    
    angular.module('myApp', []).controller('namesCtrl', function($scope) {
        $scope.searchText='';
        $scope.names = {
      "1": {
           "name": "some"
      },
      "2": {
           "name": "values"
      },
      "3": {
            "name": "are"
      },
      "4": {
           "name": "there"
      },
      "5": {
            "name": "here"
      }
        };
    $scope.objArray=function (obj) {
        var result=[];
        for (var key in obj) {
            result.push({
                key: key,
                value: obj[key]
            });
        }
        return result;
    }
    
    
    });
    </script>
    
    </body>
    </html>
    
    
    
    • {{x.value.name}
    角度.module('myApp',[]).controller('namesCtrl',function($scope){ $scope.searchText=''; $scope.names={ "1": { “姓名”:“一些” }, "2": { “名称”:“值” }, "3": { “名称”:“是” }, "4": { “名称”:“有” }, "5": { “名称”:“此处” } }; $scope.objArray=函数(obj){ var结果=[]; for(obj中的var键){ 结果:推({ 钥匙:钥匙, 值:obj[键] }); } 返回结果; } });
    您能用这些数据说明您的目标吗?您的数据结构
    $scope.names
    可能不是您想要实现的目标。