2016-06-11 3 views
1

どのようにupdate新しい値を選択するとselect boxをクリックして保存ボタンをクリックします。保存ボタンをクリックして `select box`から新しい値を`更新 'する方法は?

私は、更新ボタンのための私のJS関数で次のようにNG-クリック機能を使用しています:

$scope.updateDealDetail = function updateDealDetail(){ 
     $scope.showEditView = !$scope.showEditView; 
     $scope.dealDetail.decisionMakerDetail.email = $scope.selectedid; 
    } 

編集ボタンのMy機能:

$scope.editUserDetail = function editUserDetail(){ 
     $scope.showEditView = !$scope.showEditView; 
     $scope.showSubmitView = !$scope.showSubmitView; 
     deal.getIdData($scope.accountDetail. accountUsers[0].role,$scope.accountDetail.id).then(function successCb(data){ 
      $scope.editIdOptionsData=data; 
      $scope.selectedid = $scope.editIdOptionsData[0].email; 
     }); 
    }; 

とbittonクリックのための私のHTMLは次のようです:

<select ng-model="selectedid" class="form-control"> 
    <option ng-selected="selectedid" ng-repeat="eiod in editIdOptionsData" value="{{eiod.email}}">{{eiod.email}} 

<button ng-click="updateDealDetail(eoid.email)" ng-disabled="dealDataSaveButtonDisabled">Update</button> 

これは、ng-optionsを使用しているため、ng-repeatを使用しているため、APIを介したデータが現在ボックスに表示されています。しかし、最初のインデックスにある私のデータは、唯一の設定になっています。選択ボックスのデフォルト値を設定し、任意の値を選択することによって、onclickはその値を更新する必要があります。

+1

「私の価値は更新されていません」と記載してください - 期待される結果は何ですか?また、 'getDeal()'関数やビューコードのような部分を追加してください。 –

+0

私が選択した値は保存されません。 –

+0

$ scope.dealDetailオブジェクトに関する情報を提供してください。 – User2

答えて

1

オプションをレンダリングするためにngRepeatを使用しないでください。これが問題です。正しいコードは次のようになります。

<select class="form-control" 
     ng-model="selectedid" 
     ng-options="eiod.email as eiod.email for eiod in editIdOptionsData"> 
</select> 
+0

ngRepeatの問題点は何ですか? –

+0

モデルバインディングが正しくありません(オブジェクトにバインドできません)。 ngRepeatはselectオプションのレンダリングには使用されません。 – dfsq

+0

お元気ですか?このような "editIdOptionsDataのeiodのためのeiod.emailとしてのeiod.email"を書く必要がありますか? –

0

<select>要素

オンラインデモでng-optionsng-modelng-changeを使用するためのベストプラクティス - https://plnkr.co/edit/Gaa8sMgerRv6chio4iYa?p=preview

HTML

<select 
    ng-model="selectedItem" 
    ng-change="onSelectedItemChanged()" 
    ng-options="item as item.email for item in items"></select> 

JS

app.controller('MainCtrl', function($scope) { 
    $scope.items = [{ 
    email: '[email protected]' 
    }, { 
    email: '[email protected]' 
    }]; 

    $scope.selectedItem = $scope.items[0]; 

    $scope.onSelectedItemChanged = function() { 
    alert('you changed it to ' + $scope.selectedItem.email); 
    } 
}); 
+0

ボタンがあるコードを編集してそのボタンをクリックすると、選択されたメールIDを保存することができますか?それは私にとって非常に役に立ちます。 –

関連する問題