Typeahead 从 url json 值中获取数据无效
Typeahead fetch data from url json value not working
下面是我的 HTML 代码 angular 预先输入:
<div class="form-group">
<select name="" class="form-control" ng-model="city" ng-change="onChange(e)" id="city">
<option value="DELHI">DELHI</option>
<option value="BANGALORE">BANGALORE</option>
<option value="GOA">GOA</option>
<option value="KOLKATA">KOLKATA</option>
<option value="PUNJAB">PUNJAB</option>
</select>
</div>
<input type="search" name="" ng-model="bankName" typeahead='bank_name as bankName | filter:$viewValue | limitTo:8' id="input" class="form-control" value="" placeholder="Search" required="required" title="">
<table class="table table-hover">
<thead>
<tr>
<th>IFSC</th>
<th>BANK ID</th>
<th>BANK NAME</th>
<th>BRANCH</th>
<th>ADDRESS</th>
<th>CITY</th>
<th>DISTRICT</th>
<th>STATE</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="service in services">
<td>{{service.ifsc}}</td>
<td>{{service.bank_id}}</td>
<td>{{service.bank_name}}</td>
<td>{{service.branch}}</td>
<td>{{service.address}}</td>
<td>{{service.city}}</td>
<td>{{service.district}}</td>
<td>{{service.state}}</td>
</tr>
</tbody>
</table>
以下是 JS 文件:
var app = angular.module('bankBranch', ['ui.bootstrap'])
.controller('ServicesCtrl', ['$scope', '$http', function($scope, $http){
$scope.bankUrl = "https://someweb.com/api/bank_branches?offset=0&limit=50&city=";
$scope.city = 'BANGALORE';
var bankName = '$scope.bank_name';
var cities = '$scope.city';
$scope.getdata = function(){
$http.get($scope.bankUrl+$scope.city).then(function(response){
$scope.services = response.data;
});
}
$scope.onChange = function(e){
$scope.getdata();
}
$scope.getdata();
}]);
问题是我正在尝试在输入字段中获取分支名称,当我键入以下内容时 table 数据应该根据该名称进行过滤。 onChange 函数适用于 select 框。 apiurl的JSON格式如下:
[{
"ifsc": "asdads",
"bank_id": 110,
"bank_name": "abc bank",
"branch": "BANGALORE",
"address": "ewrwerewr",
"city": "BANGALORE",
"district": "BANGALORE URBAN",
"state": "KARNATAKA"
}]
知道如何修改吗?卡住了。请帮助我。
你在使用 typeahead 指令时弄错了,它的工作方式是,它需要一个你将应用 $viewValue
过滤器
的 promise 对象
<input type="search" name="" ng-model="bankName"
typeahead='bank_name for bankName in getdata()'
id="input" class="form-control" value=""
placeholder="Search" required="required" title=""/>
所以让我们将您的 $scope.getData
函数更改为 return promise 对象。
$scope.getdata = function(){
return $http.get($scope.bankUrl+$scope.city).then(function(response){
$scope.services = response.data;
return $scope.services;
});
}
$scope.onChange = function(e){
return $scope.getdata();
}
Note: If you are using Angular ui-bootstrap version 1.X+ then you have to use uib-
prefix before each ui-bootstrap directive like in your case it would be uib-typeahead
instead of typeahead
.
下面是我的 HTML 代码 angular 预先输入:
<div class="form-group">
<select name="" class="form-control" ng-model="city" ng-change="onChange(e)" id="city">
<option value="DELHI">DELHI</option>
<option value="BANGALORE">BANGALORE</option>
<option value="GOA">GOA</option>
<option value="KOLKATA">KOLKATA</option>
<option value="PUNJAB">PUNJAB</option>
</select>
</div>
<input type="search" name="" ng-model="bankName" typeahead='bank_name as bankName | filter:$viewValue | limitTo:8' id="input" class="form-control" value="" placeholder="Search" required="required" title="">
<table class="table table-hover">
<thead>
<tr>
<th>IFSC</th>
<th>BANK ID</th>
<th>BANK NAME</th>
<th>BRANCH</th>
<th>ADDRESS</th>
<th>CITY</th>
<th>DISTRICT</th>
<th>STATE</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="service in services">
<td>{{service.ifsc}}</td>
<td>{{service.bank_id}}</td>
<td>{{service.bank_name}}</td>
<td>{{service.branch}}</td>
<td>{{service.address}}</td>
<td>{{service.city}}</td>
<td>{{service.district}}</td>
<td>{{service.state}}</td>
</tr>
</tbody>
</table>
以下是 JS 文件:
var app = angular.module('bankBranch', ['ui.bootstrap'])
.controller('ServicesCtrl', ['$scope', '$http', function($scope, $http){
$scope.bankUrl = "https://someweb.com/api/bank_branches?offset=0&limit=50&city=";
$scope.city = 'BANGALORE';
var bankName = '$scope.bank_name';
var cities = '$scope.city';
$scope.getdata = function(){
$http.get($scope.bankUrl+$scope.city).then(function(response){
$scope.services = response.data;
});
}
$scope.onChange = function(e){
$scope.getdata();
}
$scope.getdata();
}]);
问题是我正在尝试在输入字段中获取分支名称,当我键入以下内容时 table 数据应该根据该名称进行过滤。 onChange 函数适用于 select 框。 apiurl的JSON格式如下:
[{
"ifsc": "asdads",
"bank_id": 110,
"bank_name": "abc bank",
"branch": "BANGALORE",
"address": "ewrwerewr",
"city": "BANGALORE",
"district": "BANGALORE URBAN",
"state": "KARNATAKA"
}]
知道如何修改吗?卡住了。请帮助我。
你在使用 typeahead 指令时弄错了,它的工作方式是,它需要一个你将应用 $viewValue
过滤器
<input type="search" name="" ng-model="bankName"
typeahead='bank_name for bankName in getdata()'
id="input" class="form-control" value=""
placeholder="Search" required="required" title=""/>
所以让我们将您的 $scope.getData
函数更改为 return promise 对象。
$scope.getdata = function(){
return $http.get($scope.bankUrl+$scope.city).then(function(response){
$scope.services = response.data;
return $scope.services;
});
}
$scope.onChange = function(e){
return $scope.getdata();
}
Note: If you are using Angular ui-bootstrap version 1.X+ then you have to use
uib-
prefix before each ui-bootstrap directive like in your case it would beuib-typeahead
instead oftypeahead
.