2017-03-24 15 views
0

私は、HTMLと角度のあるMVCプロジェクトで作業しています。 入力ボックスに入力された名前に基づいて選択される選択リストがありますが、IDを取得できません。名前で選択し、選択したアイテムのIDを角度で取得する

これは動作しますが、私が選択した項目のIDを取得しない:

<input type="text" ng-model="selectedCountry"> 
    <select class="form-control" 
    ng-model="selectedCountry" 
    ng-options="country.name as country.name for country in countries"> 
<option value="">Select Country</option> 

そして、私は名前で選択してIDを取得することはできませんよ、これは、動作していません:ここでは

<input type="text" ng-model="selectedCountry"> 
    <select class="form-control" 
    ng-model="selectedCountry" 
    ng-options="country.id as country.name for country in countries"> 
<option value="">Select Country</option> 

はplunkerです:Plunker

助けてくれてありがとう!

答えて

1

2つ目のシナリオが動作するためには、あなたがこのようなあなたのコントローラに国のIDを取得する必要があります:

$scope.selectedCountry = $scope.countries.find(function(country) { 
    return country.name === "Italy"; 
    }).id; 
+0

!それは私が避けようとしていることです、HTMLで宣言的なモードですべてを行うことによってこれを避けることは可能ですか? – MarcosF8

+0

私は気づいていません。提供された名前(イタリア)からIDまたはオブジェクト全体を派生させるか、いくつかのjQuery操作を行うかどうか。すべてのオプションがコントローラコードを指しています。 – jbrown

+0

大変お手伝いしてくれてありがとう! – MarcosF8

0

この

HTML

<input type="text" ng-model="selectedCountryId"> 
    <select class="form-control" ng-model="selectedCountryId"> 
    <option ng-repeat="country in countries" value="{{country.id}}">{{country.name}}</option> 
</select> 
<div>selected country id: {{selectedCountryId}} </div> 

を試してみてくださいコントローラ内追加$scope.selectedCountryId = "";

enter image description here

は、それが

$scope.selectedCountry = {}; 

あなたのJavaScriptで、あなたのHTMLで

0

それとも

<input type="text" ng-model="selectedCountry.name"> 
    <select class="form-control" 
     ng-model="selectedCountry" 
     ng-options="country as country.name for country in countries"> 
    <option value="">Select Country</option> 

    </select> 

を役に立てば幸い

2
<select class="form-control" data-ng-change="call(country.id)" 
     ng-model="country.id" 
     ng-options="country.id as country.name for country in countries"> 
    <option value="">Select Country</option> 
    </select> 
0

私はモデルの異なるキーを使用している別の選択で同じモデルを使用するとは考えられません。

私は両方のモデルに名前を使用して、配列からIDを取得して行くだろう:右である

$scope.getId = function(){ 
    var co = $scope.countries.filter(function (el) { return el.name == $scope.selectedCountry }); 
     if(typeof co !== 'undefined' && co.length > 0){ 
     $scope.selectedId =co[0].id; 
     }else{ 
     $scope.selectedId = null; 
     } 
    }; 

plunker here

関連する問題