如何在json数组中进行Angularjs的全局搜索?

时间:2016-03-15 23:19:28

标签: angularjs search

我能够在同一视图中显示和过滤搜索结果。但是如何在标题导航栏中创建所有页面共有的搜索框。单击搜索按钮应打开单独的页面,并应根据搜索框中输入的值从json数组按字母顺序加载搜索结果。这该怎么做?请帮助

1 个答案:

答案 0 :(得分:0)

这是攻击您的问题的一种方法。如果我正确理解你的问题,你想过滤掉一个JSON数组......

让我们说在mainCtrl中我们有这个:

$http({
  method: 'GET',
  url: '/Users'
}).then(function successCallback(response) {
    $scope.usersJson = response;
  }, function errorCallback(response) {
    console.error("Something Happened...");
  });

因此,我们可以说上面的数据为我们提供了如下所示的用户示例:

"Username" : {
"name" : "Username",
"value" : "Hello World"
}

然后在我们的html中,如果我们想要查看数据:

<body ng-app="app" ng-controller="mainCtrl">
  <input type="text" ng-model="search" />
  <p ng-repeat="message in messages | filter: search">
    Name: {{ message.name }}
    Message : {{message.value}}
  </p>
</body>

您必须在AngularJS中了解更多关于ngFilter指令和过滤的信息。一般而言...... Here是关于它的文档。希望这有帮助!

修改

如果您想在多个控制器中执行此操作,只需将服务作为控制器之间的通信即可...

app.service("jsonArray", function($scope){
  this.getArray = function(){
   $http({
      method: 'GET',
      url: '/Users'
    }).then(function successCallback(response) {
        return response;
      }, function errorCallback(response) {
        console.error("Something Happened...");
      });
   }
})

现在您可以将此服务注入控制器,只需执行jsonArray.get()即可获取JSON列表。

如何将服务注入控制器?

示例:

app.controller('mainCtrl', ["$scope", "jsonArray", function($scope, jsonArray){

}])

希望这有帮助..