2017-03-15 41 views
0

如何讓兩個selectboxes在angularjs中反向工作? 我有這個例子。如何讓兩個選擇框在angularjs中反向工作?

<select id="srcCurrency" ng-model="params.srcCurrency">      
    <option>USD</option> 
    <option>KRW</option> 
</select> 
<select id="dstCurrency" ng-model="params.dstCurrency"> 
    <option >USD/option> 
    <option >KRW</option> 
</select> 

我想選擇彼此相反。 我有這個例子,但我想要一個更有效的方法。

$scope.$watch('params.srcCurrency', function (newValue, oldValue) { 
    if ($scope.params.srcCurrency == "USD") { 
    $scope.params.dstCurrency = "KRW"; 
    } else { 
    $scope.params.dstCurrency = "USD"; 
    } 

}, true); 

$scope.$watch('params.dstCurrency', function (newValue, oldValue) { 
    if ($scope.params.dstCurrency == "USD") { 
    $scope.params.srcCurrency = "KRW"; 
    } else { 
    $scope.params.srcCurrency = "USD"; 
    } 
}, true); 

回答

0
<select id="srcCurrency" ng-model="params.srcCurrency" ng-change="switchCurrencies(params.srcCurrency, 'source')">      
    <option>USD</option> 
    <option>KRW</option> 
</select> 
<select id="dstCurrency" ng-model="params.dstCurrency" ng-change="switchCurrencies(params.dstCurrency, 'dest')"> 
    <option >USD/option> 
    <option >KRW</option> 
</select> 

在你的控制器

$scope.switchCurrencies = function(resource, type){ 
    if(type == 'source'){ 
    $scope.params.dstCurrency = angular.copy(resource); 
    }else{ 
    $scope.params.srcCurrency = angular.copy(resource); 
    } 
} 
+0

這是因爲srcCurrency值已被更改,並且選擇值相同。 – ansatgol

+0

因爲ng-model =「params.srcCurrency」有效。 – ansatgol

+0

更改srcCurrency時,最後一個值存儲在$ scope.params.srcCurrency中,您可以將此值分配給$ scope.params.dstCurrency。它工作? –

0

你最好避免使用$手錶。而不是使用ng-change

+0

是什麼原因? – ansatgol

+0

避免手錶是最佳實踐之一。$ Watch會影響性能應用程序。因爲每次運行$ digest循環都必須重新評估它們。當手表觀察到的值發生變化時,註冊到手錶的功能將同步執行,從而暫時阻止網絡瀏覽器用戶界面。對於運行速度極快的手錶,鎖定效果不明顯。但是,對於進行大量處理的手錶,AngularJS應用程序可能會出現明顯的下滑。 –

+0

感謝您的信息。 – ansatgol

相關問題