Search code examples
javascriptangularjsdropdownng-optionsangularjs-select

Using <select> and <option> in AngularJS


I have this anchor tag and i change my view depending on the date coming from the object. I am trying to change it to be a select option but it is not working the way i am doing it.

This is anchor tag syntax:

 <a href="#" ng-repeat="item in home.prData" ng-click="home.selectedPr = item; $event.preventDefault();
 $event.stopPropagation();">{{item.date}}</a>

I am trying to change it to be like that when i use select option

 <select st-search="{{item.date}}" class="show-tick form-control dropdown_custom_list">
      <option value="">- select a date -</option>
      <option ng-repeat="item in home.prData" value="{{home.selectedPr = item}}">{{item.date}}
      </option>
  </select>

i created an example plunkr to what i am trying to achieve:

mycode


Solution

  • <select st-search="{{item.date}}" ng-model="selectedDate" ng-change="home.selectedPr = selectedDate"
     class="show-tick form-control dropdown_custom_list">
      <option value="">- select a date -</option>
      <option ng-repeat="item in home.prData" value="{{home.selectedPr = item}}">{{item.date}}
      </option>
    </select>
    

    Try adding a ng-model variable and on ng-change assign selected date.ng-change wont work without ng-model

    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
    
    <div ng-app="demoApp" ng-controller="mainController">
    
      <select class="show-tick form-control dropdown_custom_list" ng-model="selectedHotel" ng-options="hotel.name for hotel in hotels">
        <option value="">select one--</option>
      </select>
    
      <div>
        Hotel name: {{selectedHotel.name}} Category: {{selectedHotel.category | json}}
      </div>
    </div>
    
    <script>
      // Code goes here
    
      angular.module('demoApp', [])
        .controller('mainController', MainController);
    
      function MainController($scope) {
    
        $scope.selectedHotel = {};
    
        $scope.hotels = [{
          "id ": 1,
          "name": "some hotel 1 ",
          "category": [{
            "id ": 1,
            "hotel_id ": 1,
            "name ": "Cat name 1 ",
            "bnb ": "yes ",
            "simple ": "yes "
          }]
        }, {
          "id ": 2,
          "name": "some hotel 2 ",
          "category": [{
            "id ": 1,
            "hotel_id ": 2,
            "name ": "Cat name 1 ",
            "bnb ": "yes ",
            "simple ": "yes "
          }]
        }];
        // to make first  one default selected..
        //$scope.selectedHotel = $scope.hotels[0];
      }
    </script>