Reputation: 83
I want to add autocomplete in my form look like :
<md-autocomplete required
md-input-name="pekerjaan"
md-selected-item="selectedCountry"
md-search-text="searchCountry"
md-items="item in query"
md-dropdown-position="bottom"
md-floating-label="Pekerjaan">
and my controller is :
$scope.countries = [ "Albania","Andorra","Armenia","Austria","Azerbaijan","Belarus",
"Belgium","Bosnia & Herzegovina","Bulgaria","Croatia","Cyprus",
"Czech Republic","Denmark","Estonia","Finland","France","Georgia",
"Germany","Greece","Hungary","Iceland","Ireland","Italy","Kosovo",
"Latvia","Liechtenstein","Lithuania","Luxembourg","Macedonia","Malta",
"Moldova","Monaco","Montenegro","Netherlands","Norway","Poland",
"Portugal","Romania","Russia","San Marino","Serbia","Slovakia","Slovenia",
"Spain","Sweden","Switzerland","Turkey","Ukraine","United Kingdom","Vatican City"];
$scope.query = function(){
$scope.countries
}
Now i want to show all the countries except germany and austria but i dont want to delete them in $scope.countries. So how can i make it? Thanks for your help
Upvotes: 0
Views: 47
Reputation: 1688
You can use filter to skip the countries dynamically as per best practices. Kindly take look onto this plnkr.co/edit/NqwW45ijaPqTaXDU21NP?p=preview
Html Code:
<div class="col-sm-5 hidden-xs">
<div ng-repeat="country in countries | skipValues:skipCountries">{{country}}</div>
</div>
JS File:
var app = angular.module('plunker', []);
app.controller('MainCtrl',function($scope){
$scope.skipCountries = ["Germany","Austria"];
$scope.countries = [ "Albania","Andorra","Armenia","Austria","Azerbaijan","Belarus",
"Belgium","Bosnia & Herzegovina","Bulgaria","Croatia","Cyprus",
"Czech Republic","Denmark","Estonia","Finland","France","Georgia",
"Germany","Greece","Hungary","Iceland","Ireland","Italy","Kosovo",
"Latvia","Liechtenstein","Lithuania","Luxembourg","Macedonia","Malta",
"Moldova","Monaco","Montenegro","Netherlands","Norway","Poland",
"Portugal","Romania","Russia","San Marino","Serbia","Slovakia","Slovenia",
"Spain","Sweden","Switzerland","Turkey","Ukraine","United Kingdom","Vatican City"];
})
app.filter('skipValues', function($filter) {
return function(items, values) {
return $filter('filter')(items, function(obj) {
return values.indexOf(obj) == -1;
})
};
});
Additionally added filter to skip the countries..
Updated Code:
app.controller('MainCtrl',function($scope){
$scope.skipCountries = ["Germany","Austria"];
$scope.countries = [ "Albania","Andorra","Armenia","Austria","Azerbaijan","Belarus",
"Belgium","Bosnia & Herzegovina","Bulgaria","Croatia","Cyprus",
"Czech Republic","Denmark","Estonia","Finland","France","Georgia",
"Germany","Greece","Hungary","Iceland","Ireland","Italy","Kosovo",
"Latvia","Liechtenstein","Lithuania","Luxembourg","Macedonia","Malta",
"Moldova","Monaco","Montenegro","Netherlands","Norway","Poland",
"Portugal","Romania","Russia","San Marino","Serbia","Slovakia","Slovenia",
"Spain","Sweden","Switzerland","Turkey","Ukraine","United Kingdom","Vatican City"];
$scope.query= function() {
return $filter('filter')($scope.countries, function(obj) {
return $scope.skipCountries.indexOf(obj) == -1;
})
};
})
Upvotes: 1