2017-04-08 9 views
-1

ng-repeatを使用してバインドされたデータを持つmd-selectドロップダウンリストを表示しています。ボタンをクリックすると、その値のキー値(その値のjsonキー)を取得する必要があります。Angularjsのクリックでバインドされた値のキーを取得する方法は?

$scope.checklist= [{ "val": 1, "txt": "one" }, { "val": 2, 
"txt": "two" }, { "val": 3, "txt": "three" }, { "val": 4, 
"txt": "four" }, { "val": 5, "txt": "five" }, { "val": 6, 
"txt": "six" }, { "val": 7, "txt": "seven" }, { "val": 8, 
"txt": "eight" }, { "val": 9, "txt": "nine" }, { "val": 10, 
"txt": "ten" }, { "val": 11, "txt": "eleven" }]; 

    $scope.searchTerm; 
    $scope.clearSearchTerm = function() { 
     $scope.searchTerm = ''; 
    }; 
$scope.getDropdwnSelectedValue = function (val) { 
     alert(val); 
    } 

HTMLコード:

<div layout="row"> 
     <md-input-container> 

      <md-select ng-model="selected.key" md-on-close="clearSearchTerm()" multiple="" style="width:300px;"> 
       <md-select-header> 
        <input ng-model="searchTerm" type="search" placeholder="Search for .."> 
       </md-select-header> 
       <md-optgroup label="list"> 
        <md-option ng-value="chkLst.txt" ng-repeat="chkLst in checklist| 
      filter:searchTerm" >{{chkLst.txt}}</md-option> 
       </md-optgroup> 
      </md-select> 
     </md-input-container> 
    </div> 
<md-button class="md-raised md-primary" ng-click="getDropdwnSelectedValue (selected)">Get Value</md-button> 
+0

です。私はかなりの自信を持ってmodが私の変更をサポートすると確信しています。これについて今説明しますか? – halfer

答えて

1

として設定されているでしょう。また、開発中に値を確認するための関数呼び出しは必要ありません。あなたのHTMLに<pre>{{selected.key}}</pre>のように使用して、値がng-modelになっているかどうかを確認してください。

ここであなたは私の良い変更をロールバックしたい場合は、司会者のための `@のhalfer`またはフラグで私にpingを送信してくださいいずれかworking codepen

0

あなたのスコープの変数が選択された値を持つ

は、ここに私のjsです。 $scope.selected = {}としてスコープ変数を初期化し、あなたはselected.key以来$scope.selected.keyの値は、あなたがchkLst in checklist | ...をする必要がありますng-repeat="chkLstin checklist | ..."でミスをしていたあなたのng-model

+0

これは間違っています。これは、E2Eバインディングによるビューによって初期化されます。コントローラーで初期化する必要はありません。 – lin

+1

実行時にスコープ変数オブジェクトにアクセスする際に、初期化されていない場合はエラーが発生することがあります。通常、厳密なモードです。だから私は常にそれにアクセスする前にスコープ変数を初期化することを好みます。 – Nitheesh

+0

さて、あなたはそれをすることができますが、その必要はありません。ユーザーはコントローラ内でinitを使わずに '$ scope.selected.key'に簡単にアクセスすることができます。 – lin

関連する問題