我使用Angular http.get从弹性搜索中提取数据并使用angular显示输出。
最初的概念工作正常,但我想要做的是在页面上添加一个按钮,以便能够运行经常需要的查询,该查询将修改显示的数据并排除包含特定单词或短语的记录。
我认为这可以通过让按钮设置http.get请求范围内的变量值然后重新提交get请求来实现。
到目前为止,我有:
<body>
<form>
<input type="text" placeholder="RemoveEntires" class="form-control" ng-model="formData.input1">
<input type="button" value="RemoveEntries containing text" ng-click='DocView()'>
</form>
<script>
var app = angular.module('DisplayDoc', []);
var baseUrl = "http://elasticserver:9200/app/_search?q=product:balls";
var queryURL = baseUrl + "+!color:"; + formData.input1;
var completeURL = queryURL + "&sort=DateTime&size=1000&default_operator=AND";
app.controller('DocView', function($scope, $http) {
$http({method: 'GET', url: completeURL})
.success(function(response) {$scope.jsondata = response.hits.hits;});
});
</script>
如果我在表单中输入“red”,我希望它将http.get请求重新提交给elasticsearch,然后将弹出的产品中的红球排除。
目前这对我不起作用。有什么想法吗?
答案 0 :(得分:1)
你可以这样做。
控制器:
.controller('MainCtrl', function ($scope, $http) {
$scope.search = '';
var baseUrl = "http://elasticserver:9200/app/_search?q=product:balls+!color:";
$scope.submit = function() {
$http.get(baseUrl + $scope.search + "&sort=DateTime&size=1000&default_operator=AND")
.then(function(response) {
$scope.jsondata = response.hits.hits;
});
}
});
然后像这样构建表单:
<form novalidate>
<input type="text" ng-model="search">
<button type="submit" ng-click="submit()">Search</button>
</form>