2016-11-07 253 views
0

我正在嘗試使用過濾器,以便使用ng-options與名稱ID匹配選擇元素中新選擇的名稱。對象的角度過濾器

我與看起來那樣工作的對象:

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

現在選擇的默認設置爲「約翰」。當用戶改變選擇選項以表示「豐富」時,我想讓過濾器函數返回2(這是Rich的相應ID)。

假設:

$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