Angularjs populate select options with json

前端 未结 4 1062
暗喜
暗喜 2021-02-09 04:54

I am looking to populate select option with values from a basic json array.

The example I have is a country select. Each country has an id element and a name plus other

相关标签:
4条回答
  • 2021-02-09 05:18
    1. angular.module('ui.bootstrap.demo', ['ui.bootstrap']) - be sure you have ui.bootstrap. Read how to install it http://angular-ui.github.io/bootstrap/
    2. Here is your updated jsfiddle http://jsfiddle.net/e31k5e6L/1/
    0 讨论(0)
  • 2021-02-09 05:23

    In this above example you are missing value attribute change this value="{{country.countryId}}". try this

    <select id="Country" name="Country" class="form-control" size="10" ng-model ="chooseCountries">                                
        <option ng:repeat="country in chooseCountries" value="{{country.countryId}}">
            {{country.name}}
        </option>
    </select>
    

    and see the example click here

    0 讨论(0)
  • 2021-02-09 05:34

    The best way to populate a standard select(you can use angular-ui-select too) with objects is to use "ng-options" directive and "ng-repeat" using "track by id" (see AngularJS doc), this works well with ng-model. This is an example of how to use it:

    <select id="select_field" name="select_field"
       ng-model="vm.selectedCountry"
       ng-options="country as country.name for country in vm.chooseCountries track by country.countryId">
       <option value="">-- Select Country --</option>
    </select>
    

    I must say that "vm" is in case of "controllerAs" defined in the controller, if you use the $scope directly, you can remove the "vm".

    This is the best way that I found to populate a select field.

    0 讨论(0)
  • 2021-02-09 05:36

    You miss-typed the value attribute, change it to country.countryId.

    Also, set ng-model directive to a single countryId value (or array of country IDs) instead of the full object.

    <select id="Country" name="Country" ng-model ="selectedValue"> 
        <option ng:repeat="country in chooseCountries" value="{{country.countryId}}">
            ...   
    

    JS:

    function DemoSelectCtrl($scope) {
    
        $scope.selectedValue = 1;    
    
        $scope.chooseCountries=[
            {countryId : 1, name : "France - Mainland", desc: "some description" },
            {countryId : 3, name : "Gibraltar", desc: "some description"},
            {countryId : 3, name : "Malta", desc: "some description"}
        ];  
    
    });
    
    0 讨论(0)
提交回复
热议问题