将搜索查询附加到 AngularJS 中的 $http.get 查询
Append search query to $http.get query in AngularJS
我曾几次尝试将作为搜索查询输入的订单附加到我的应用程序中的 $http.get url,但没有成功。
如果我输入特定订单号的完整路径,它会检索该订单 http://example.com/api/booking/get/orders/121137
我在控制器中添加了 list.html 上的搜索查询 $scope.query = query;
.controller('ListController', ['$scope', '$http', '$state','$cordovaBluetoothSerial', '$window', '$location', function($scope, $http, $state, $cordovaBluetoothSerial, $window, $location) {
//$http.get('http://example.com/api/booking/get/orders/').success(function(data) {
//$http({ url: 'http://example.com/api/booking/orders/', method: "GET", params: {query} }).success(function(data) {
$http.get('http://example.com/api/booking/get/orders/+ $scope.query').success(function(data) {
//$http.get('http://example.com/api/booking/get/orders/121137').success(function(data) {
//$http.get('js/121137.json').success(function(data) {
$scope.orders = [ data.data ];
$scope.query = query;
这是 plnkr 中的代码。关于更多 $http.get
urls/syntax 尝试的任何建议?
当您的控制器执行代码时
$http.get('http://example.com/api/booking/get/orders/'+$scope.query).success(function(data) {
$scope.orders = [ data.data ];
scope.query = query;
}
它将调用http://example.com/api/booking/get/orders/
,因为$scope.query
未定义(list.html中的输入框为空)。现在,当您在输入框中输入内容时,$scope.query
值更改为输入框中的值,但 $http.get..
不会被调用,因为它未执行。而是将 $http.get
包含在如下函数中
$scope.getOrders= function(){
$http.get('http://example.com/api/booking/get/orders/'+$scope.query).success(function(data) {
console.log(data)
$scope.orders = data.data;
}
}
和list.html将如下
<ion-header-bar class="bar-dark" align-title="center">
<h2 class="title">Order Search</h1>
</ion-header-bar>
<ion-content padding="true" class="has-header ">
<label class="item item-input">
<i class="icon ion-search placeholder-icon"></i>
<input type="search" ng-model="query" placeholder="Search Order #">
<button ng-click="getOrders()">search</button>
</label>
<ion-list>
<ion-item ng-show="query" ng-repeat="order in orders" class="item-thumbnail-left item-text-wrap"
href="#/tab/list/{{order.user}}">
<h2>Product Name: {{order.name}}</h2>
<h3>Quantity: {{order.seatcount}}</h3>
<h2>Order Subtotal: £{{order.subtotal}}</h2>
</ion-item>
</ion-list>
</ion-content>
我想我在 $scope.query 之后看到了一个单引号,它不应该是这样的,因为 JavaScript 会看到它是一个字符串而不是参数。
只需更改此
$http.get('http://example.com/api/booking/get/orders/+ $scope.query').success(function(data)
成为这个
$http.get('http://example.com/api/booking/get/orders/' + $scope.query).success(function(data)
应该可以。
我曾几次尝试将作为搜索查询输入的订单附加到我的应用程序中的 $http.get url,但没有成功。
如果我输入特定订单号的完整路径,它会检索该订单 http://example.com/api/booking/get/orders/121137
我在控制器中添加了 list.html 上的搜索查询 $scope.query = query;
.controller('ListController', ['$scope', '$http', '$state','$cordovaBluetoothSerial', '$window', '$location', function($scope, $http, $state, $cordovaBluetoothSerial, $window, $location) {
//$http.get('http://example.com/api/booking/get/orders/').success(function(data) {
//$http({ url: 'http://example.com/api/booking/orders/', method: "GET", params: {query} }).success(function(data) {
$http.get('http://example.com/api/booking/get/orders/+ $scope.query').success(function(data) {
//$http.get('http://example.com/api/booking/get/orders/121137').success(function(data) {
//$http.get('js/121137.json').success(function(data) {
$scope.orders = [ data.data ];
$scope.query = query;
这是 plnkr 中的代码。关于更多 $http.get
urls/syntax 尝试的任何建议?
当您的控制器执行代码时
$http.get('http://example.com/api/booking/get/orders/'+$scope.query).success(function(data) {
$scope.orders = [ data.data ];
scope.query = query;
}
它将调用http://example.com/api/booking/get/orders/
,因为$scope.query
未定义(list.html中的输入框为空)。现在,当您在输入框中输入内容时,$scope.query
值更改为输入框中的值,但 $http.get..
不会被调用,因为它未执行。而是将 $http.get
包含在如下函数中
$scope.getOrders= function(){
$http.get('http://example.com/api/booking/get/orders/'+$scope.query).success(function(data) {
console.log(data)
$scope.orders = data.data;
}
}
和list.html将如下
<ion-header-bar class="bar-dark" align-title="center">
<h2 class="title">Order Search</h1>
</ion-header-bar>
<ion-content padding="true" class="has-header ">
<label class="item item-input">
<i class="icon ion-search placeholder-icon"></i>
<input type="search" ng-model="query" placeholder="Search Order #">
<button ng-click="getOrders()">search</button>
</label>
<ion-list>
<ion-item ng-show="query" ng-repeat="order in orders" class="item-thumbnail-left item-text-wrap"
href="#/tab/list/{{order.user}}">
<h2>Product Name: {{order.name}}</h2>
<h3>Quantity: {{order.seatcount}}</h3>
<h2>Order Subtotal: £{{order.subtotal}}</h2>
</ion-item>
</ion-list>
</ion-content>
我想我在 $scope.query 之后看到了一个单引号,它不应该是这样的,因为 JavaScript 会看到它是一个字符串而不是参数。
只需更改此
$http.get('http://example.com/api/booking/get/orders/+ $scope.query').success(function(data)
成为这个
$http.get('http://example.com/api/booking/get/orders/' + $scope.query).success(function(data)
应该可以。