Search code examples
angularjsmaterial-designangularjs-select

ng-change function Calling on-load before selecting


Calling ng-change="changeStudentStatus();" function on-load, before selecting options.

<md-select ng-model="ctrl.newStudentStatus" ng-change="changeStudentStatus();" ng-if="ctrl.studentStatusList" >
   <md-option class="ss-options" ng-value="item.display_name" ng-repeat="item in ctrl.studentStatusList" ng-selected="item.id == ctrl.statusId">{{item.display_name}}</md-option>
</md-select> 

Script :

$scope.changeStudentStatus = function(){
     //some logic  
};

it should Call when use change the DropDown. whats wrong in my script


Solution

  • Its calling the changeStudentStatus() eveytime the page loading before select the options.

    <md-select ng-model="ctrl.newStudentStatus" ng-change="changeStudentStatus();" ng-if="ctrl.studentStatusList" >
       <md-option class="ss-options" ng-value="item.display_name" ng-repeat="item in ctrl.studentStatusList" ng-selected="item.id == ctrl.statusId">{{item.display_name}}</md-option>
    </md-select> 
    

    i just resolved the issue with temporary solution, i have to call changeStudentStatus only when user changed the values, so i am creating a temporary variable and storing the earlier value, can performing the logic only when values is changed.

    Script:

    $scope.newValue  =ctrl .newStudentStatus;
            $scope.changeStudentStatus = function(){
                  if($scope.oldVlaue === $scope.newValue)
                  {
                    //some logic  
                  }
            };