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