2017-06-15 50 views
0

Here are試圖將meter值轉換爲yard值。我有兩個下拉菜單。第一個下拉列表有一些值。第二個下拉列表有兩個值「米」&「院子」,現在的問題是如果從第二個下拉列表中選擇,第一個下拉列表中的值要保持相同。但是,如果選擇「Yard」,則需要將第一個下拉列表中的整個值轉換爲Yard值。我發現了邏輯,但我不知道如何將其實施到角度控制器。我在這裏創建了一個plunkr https://plnkr.co/edit/Q4lxXf6YRrdAV2kUNAln?p=preview如何將yard值轉換爲angularjs中的meter值

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;) 

}} 

}); 

回答

1

所以如果選擇堆場,那麼你需要通過1.0936乘以距離值,因此您可以直接做在ngOptions是這樣的:

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

因此,如果Converttypeid等於'2'(這意味着選擇了Yard選項),那麼距離乘以1 + (true * 0.0936)即等於1.0936

如果不是距離乘以1 + (false * 0.0936)即等於1,那麼它仍然是相同的值。

Here is a plunker顯示此

+0

謝謝你讓..其做工精細.. – ManojKanth

1

可以修改ng-change功能這樣

$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