2016-11-07 12 views
0

ng-optionsを名前IDに使用して、select要素の新しく選択された名前と一致させるためにfilterを使用しようとしています。オブジェクトの角度フィルタ

私のようなルックスで働いているオブジェクト:選択は、デフォルトでは「ジョン」に設定されている今

$scope.fish = {1:'Ben', 2: 'Rich', 3:'John'} 

。ユーザーが「Rich」と言うようにselectオプションを変更すると、フィルタ関数がリッチの対応するIDである2を返すようにします。

$scope.selectedFish 

は、名前だけではなく、魚のためのIDを格納します

があるとします。

JSFiddle

答えて

1

あなたがこれを行うことができ、

<div data-ng-app="market"> 
    <div data-ng-controller="SomeController"> 
    <select ng-model="selectedFish" ng-options="key as value for (key , value) in fish" ng-change="getIdByName()"></select> 
    </div> 
</div> 

コントローラー:

app.controller('SomeController', ['$scope', '$filter', function($scope, $filter) { 
    $scope.fish = { 
    1: 'Ben', 
    2: 'Rich', 
    3: 'John' 
    } 
    $scope.getIdByName = function() { 
    angular.forEach($scope.fish, function(value, key) { 
     if (key == $scope.selectedFish) { 
     console.log("selected key is " + $scope.selectedFish + "selected value is " + value); 
     } 
    }); 
    } 

}]); 

DEMO

+0

ははるかに高く評価していました! – Andres

1

これは助けに次のソリューション

$scope.fish = {1:'Ben', 2: 'Rich', 3:'John'}; 
$scope.selected = 'Rich'; 

var getValue = function(){ 
    var result = ""; 
    angular.forEach($scope.fish, function(value, key) { 
     if (value == $scope.selected) { 
      result = key; 
     } 
    }); 
    console.log(result); 
    return result; 
} 

希望を使用してみてください。

+0

おかげで、あなたとSajeetharanは基本的に同じソリューション – Andres