2017-06-15 4 views
0

Essayez de convertir la valeur du compteur en yard. J'ai deux listes déroulantes. La première liste déroulante a des valeurs. Et la 2ème liste déroulante a deux valeurs "mètre" & "yard", Maintenant la question est Si le compteur sélectionné dans la liste déroulante 2nd, Les valeurs dans la première liste déroulante veulent rester les mêmes. Mais, si "Yard" sélectionné les valeurs entières de la première liste déroulante doit être converti en valeurs Yard. J'ai trouvé la logique mais je ne sais pas comment l'implémenter dans le contrôleur angulaire. Ici, je suis créé un plunkr https://plnkr.co/edit/Q4lxXf6YRrdAV2kUNAln?p=previewComment convertir la valeur de la jauge à la valeur du compteur en angularjs

HTML

<!DOCTYPE html> 
<html> 

    <head> 
    <script data-require="[email protected]" data-semver="1.6.2" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.2/angular.js"></script> 
    <link rel="stylesheet" href="style.css" /> 
    <script src="script.js"></script> 
    </head> 

    <body> 
    <div ng-app="app" ng-controller="ctrl"> 

<select class="form-control" ng-model="distancetypeId" ng-options="Distance.id as Distance.value for Distance in data"></select> 
<select class="form-control" ng-model="ConverttypeId" ng-options="Convert.id as Convert.type for Convert in convertor" ng-change="convertToMeter()"></select> 

</div> 
    </body> 

</html> 

AngularJS

angular.module("app",[]) 
.controller("ctrl",function($scope){ 


    $scope.data = [{ 
    "id": 1, 
    "value": 254 
    }, 
    { 
    "id": 2, 
    "value": 100 
    }, 
    { 
    "id": 3, 
    "value":250 
    }, 
    { 
    "id": 4, 
    "value":10 
    }] 

    $scope.convertor = [{ 
    "id": 1, 
    "type": "Meter" 
    }, 
    { 
    "id": 2, 
    "type": "Yard" 
    }]; 



$scope.convertToMeter=function(ConverttypeId){ 
      if(ConverttypeId = 2){ 

    //this is logic that i want to do (dropdown1values=value*1.0936;) 

}} 

}); 

Répondre

1

Donc, si cour est sélectionné, vous devez multiplier la valeur de distance par 1,0936 de sorte que vous pouvez directement faire en le ngOptions comme ceci:

ng-options="Distance.id as (Distance.value * (1 + (ConverttypeId == '2') * 0.0936)) for Distance in data" 

Donc, si Converttypeid est égal à '2' (ce qui signifie que l'option Yard est sélectionnée), la distance est multipliée par 1 + (true * 0.0936), ce qui correspond à 1.0936.

Si ce n'est pas la distance est multipliée par 1 + (false * 0.0936) ce qui équivaut à 1, donc c'est toujours la même valeur.

Here is a plunker pour montrer ce

+0

merci Jean .. .. son travail bien – ManojKanth

1

vous pouvez modifier la fonction ng-change comme celui-ci

$scope.convertToMeter=function(){ 
    if($scope.ConverttypeId == 2){ 
    // document.getElementById("outputMeters").innerHTML=value/1.0936; 
     for(var i=0; i<=$scope.data.length-1; i++){ 
     $scope.data[i].value =($scope.data[i].value/ 0.9144).toFixed(2) 
     } 
    }else if($scope.ConverttypeId == 1){ 
     for(var i=0; i<=$scope.data.length-1; i++){ 
     $scope.data[i].value = parseInt($scope.data[i].value * 0.9144) 
     } 
    } 

} 

Demo