Ich habe die folgende select
-Liste:
<select name="make" class="form-control" ng-model="selectCity">
<option value="Kannur">Kannur</option>
<option value="Agra">Agra</option>
<option value="Ahemedabad">Ahemedabad</option>
<option value="Bangalore">Bangalore</option>
<option value="Chennai">Chennai</option>
<option value="Mumbai">Mumbai</option>
</select>
Wenn ich die gewählte Option ändere, muss ich die ng-model
, selectCity
in eine Factory übergeben, die eine API
aufruft:
Die Fabrik:
carPriceApp.factory('APIservices', function($http){
APIcarModels = {};
APIcarModels.getAPIcarModels = function(){
return $http.get('/carprices3/api/apiData'+ selectCity +'.js')
}
return APIcarModels;
});
Ich habe Ihr Problem gelöst, schreiben Sie hier HTML
<div ng-controller="myCtrl">
<select ng-change="changeCity()" name="make" class="form-control" ng-model="selectCity">
<option value="Kannur">Kannur</option>
<option value="Agra">Agra</option>
<option value="Ahemedabad">Ahemedabad</option>
<option value="Bangalore">Bangalore</option>
<option value="Chennai">Chennai</option>
<option value="Mumbai">Mumbai</option>
</select>
</div>
und Javascript hier
var app = angular.module('myApp', []);
app.factory('APIservices', function($http) {
var APIcarModels = {};
APIcarModels.getAPIcarModels = function(selectCity) {
alert(selectCity);
return $http.get('/carprices3/api/apiData'+ selectCity +'.js')
}
return APIcarModels;
});
function myCtrl($scope, APIservices) {
$scope.changeCity = function() {
APIservices.getAPIcarModels($scope.selectCity);
};
}
Arbeitsbeispiel Hier
Sie können die ng-change
-Eigenschaft in Ihrer Auswahlliste verwenden und von dort Ihre API aufrufen. Sie müssen auch einen Parameter in Ihre getAPIcarModels
-Funktion aufnehmen:
Ihr Markup wäre wie folgt:
<select name="make" class="form-control" ng-model="selectCity" ng-change="selectMake()">
Und in deinem Controller:
$scope.selectMake = selectMake() {
APIservices.getAPIcarModels($scope.selectCity);
}
Und zum Schluss deine Fabrik:
APIcarModels.getAPIcarModels = function(selectCity){
return $http.get('/carprices3/api/apiData'+ selectCity +'.js')
}
sie müssen etwas wie ng-change="changeCity(selectCity)"
hinzufügen.
In den folgenden Artikeln finden Sie Beispiele und weitere Informationen
http://plnkr.co/edit/0IVNLHiw3jpz4zMKcB0P?p=preview
http://stackoverflow.com/questions/26485346/how-do-i-get-the-ng-model-of-a-select-tag-to-get-the-initially-selected-option
http://stackoverflow.com/questions/25935869/id-as-ng-model-for-select-in-angularjs
alternativ: mit ng-options
:
Aussicht:
<div ng-app='App' ng-controller="AppCtrl">
<select ng-model="selectedCity" ng-options="city.name for city in cities">
</select>
Selected City is {{selectedCity.name}}
</div>
js:
angular.module('App', [])
.controller('AppCtrl', function($scope) {
$scope.cities = [
{name: 'Chicago'},
{name: 'London'}
];
$scope.selectedCity = '';
});
arbeitsbeispiel: https://jsfiddle.net/pz9f093d/