2017-01-03 3 views
0

ng-repeatを使用してフロントエンドでAngularJSを使用してREST APIからの応答を入力しています。私は、画面に表示される各結果を変更するオプションをユーザーに提供します。ユーザーが特定の従業員の値を変更すると(その人がドロップダウンを変更しているとします)、その従業員のレコード変更リンクをクリックすると、他の従業員のHTMLに反映されます。検索応答に含まれる詳細がHTMLに表示されるようにするにはどうすればよいですか。これは私の検索応答特定のレコードの値を変更したときにng-modelの値が変更される

var searchresponse = [{ 
"items": [{ 
    "employeeId": "ABC", 
    "type": "D", 
    "alive": "Yes" 

}, { 
    "employeeId": "DEF", 
    "type": "D", 
    "alive": "Yes" 

}, { 
    "employeeId": "NPK", 
    "type": "D", 
    "alive": "Yes" 

}, { 
    "employeeId": "PKN", 
    "type": "D", 
    "alive": "Yes" 
}], 
"more": false 
}]; 

コントローラコードである私は、応答

$http.post('http://localhost:8080/services/employee/search/'+Systems+"", searchCriteria) 
.then(function(response) { 

    $scope.searchresponse= []; 
    $scope.searchresponse = response.data.items; 
} 

を検索した結果を設定していたことにより、これは私がリストとして結果ページに値を表示する方法です。

<tr ng-repeat="details in searchresponse"> 
<td class=list align=center ng-switch="details.type"> 
<span 
ng-switch-when="D">SINGLE</span><span 
ng-switch-when="E">MULTIPLE</span> 
</td> 

私は従業員ABCの値をDからEに変更します。従業員のPKNの変更リンクをクリックすると、Eとして選択されたドロップダウンがロードされます。特定の従業員の変更が他の従業員に反映されています。

これは、HTMLの値をロードするために使用される私の関数です。私が正しくあなたの質問を理解していれば、HTMLの中に、私はNG-モデルとしてそれらを宣言した

$scope.ModifyEmployeeConfig = function(details){ 
$scope.type= "" ; 
$scope.type= details.type; // I tried printing the value and see here the value in response only getting printed 
} 

これは、あなたがではなく、型変数を変更しているように見える、私のHTML

 <select name="type" class="pulldown1" id="type" ng-model="type"> 
     <option value="D">Single</option><option value="E">Multiple</option> 
     </select> 
+0

コントローラで '$ scope.searchresponse = searchresponse'を実行している場合、searchresponse"> 'の' 'の' bhantol

+0

それを試して、それは仕事をしなかった。私はこのような応答を割り当てています$ scope.searchresponse = response.data.items; – Praveen

+0

コントローラーコードをペーストして、何が間違っているかを指摘できます。どこかにresponse.dataを印刷することをお勧めします。 – bhantol

答えて

0

ですdetails.type変数をドロップダウンリストに追加します。あなたがしたいことは、ng-repeatの中であなたのドロップダウンを維持することです。次に、ModifyEmployeeConfig関数をまったく用意する必要はありません。

ユーザーが「変更」ボタンをクリックしたときにのみ、ドロップダウンを表示することができます。このような

何か:

<tr ng-repeat="details in searchresponse"> 
    <td class="list" align="center" ng-switch="details.type"> 
     <span ng-switch-when="D">SINGLE</span> 
     <span ng-switch-when="E">MULTIPLE</span> 

     <button ng-if="!details.modify" ng-init="details.modify = false" ng-click="details.modify = true">Modify</button> 

     <select ng-if="details.modify" class="pulldown1" id="type" ng-model="details.type"> 
      <option value="D">Single</option> 
      <option value="E">Multiple</option> 
     </select> 
    </td> 
</tr> 

ポイントがあるが、あなたは詳細は、あなたがグローバル型変数に変更されず、そのオブジェクトだけにタイプを設定していることを確認する必要があります。

+0

私は何をしようとしています。変更するハイパーリンクを持つ単一のページにng-repeatを使用して結果を表示しています。ユーザーがクリックすると、結果ページに表示されるデータが新しいページに表示されます。ここでDからEに値を変更すると(ページを変更する)変更リンクをクリックすると、他のレコードに反映されています。スコープ変数は同じです。 HTMLのみが変更されています – Praveen

+0

そこでModifyEmployeeConfig関数はどこで呼び出されますか? – galit90

+0

結果ページhtmlから呼び出されています。 API呼び出しを行う変更関数と検索関数は同じコントローラの下にあります – Praveen

関連する問題