2017-01-02 13 views
0

名前付きのng-repeatのリストがあります。私はこの名前を取って、彼の主題を取るためのパラメータとしてURLに渡したいと思います。今まで私がやったことは、私がその名前を渡して別のAPIから主題を得ることができるということです。しかし、問題は、最後の名前が彼の値を持つすべてのドロップダウンを置き換えることです:Angularjsの最初の値に基づく2番目の値を表示

<ul ng-repeat="person in persons"> 
    <li ng-init="pass(person.name)">{{person.name}}</li> 
    <li> 
     <select> 
      <option ng-repeat="(key, value) in choices">{{value}}</option> 
     </select> 
    </li> 
</ul> 

Controller.js

$scope.person = { 
    [ 
     { 
      "id": 1, 
      "name": "Mark" 
     }, 
     { 
      "id": 2, 
      "name": "Jakob" 
     } 
    ] 
} 

$scope.pass = function(name) { 
    $scope.name = name; 
    $http.get('url?name=' + $scope.name, {}) 
     .then(function(response) { 
      $scope.choices = response.data; 
     }, 
     function(errResponse) { 
      console.error('Error while fetching choices'); 
     }); 

} 

注:の末尾にperson.nameを渡すためにgetメソッドがありますURL。

HTMLからコントローラへのパスをどのように分離することができますか。以下のような

$scope.persons = [{ 
     "id": 1, 
     "name": "Mark" 
    }, 
    { 
     "id": 2, 
     "name": "Jakob" 
    } 
]; 


$scope.pass = function(person) { 
    $scope.name = person.name; 
    $http.get('url?name=' + $scope.name, {}).then(function(response) { 
      person.choices = response.data; 
     }, 
     function(errResponse) { 
      console.error('Error while fetching choices'); 
     }); 

} 

し、HTML:: おかげ

+0

の代わりに、 '全体' person'オブジェクトを渡しますperson.name'を呼び出し、 'pass'メソッドで' person.name'を送ります。約束が成功した後、返された応答から 'person.subject'を更新してください。 –

+0

私の正確なケースを更新しました –

+0

下記の私の答えを参照してください –

答えて

1

は次のようにあなたのコントローラのコードを作成し

<ul ng-repeat="person in persons"> 
    <li ng-init="pass(person)">{{person.name}}</li> 
    <li><select> 
    <option ng-repeat="(key, value) in person.choices">{{value}}</option> 
    </select></li> 
</ul> 

ここではサンプルフィドルです:https://jsfiddle.net/Lt7aP/4019/

+0

動作しません。まだどこにでも同じものが表示されます。リスト内の最後の名前。 –

+0

上記のサンプルを見てください。https://jsfiddle.net/Lt7aP/4018/ –

+0

ありがとうございますが、これは本当に良い解決策ではありません。私はどれくらいの名前を持っているのか知りません。私は1000人いるかもしれません。他に1000人はできません。インデックス付きの小さなソリューションが見つかりましたが、引き続き問題に直面しています。 –

関連する問題