2016-08-03 9 views
1

現在、コントローラに変数を設定しようとしていますが、別の値がng-optionsで選択されています。例えば、Companiesから選択されたものがtitleである場合、myValueは、特定の会社の対応するidに設定されます。以下は、HTMLスニペットです:ng-optionが選択されたときにコントローラ変数を更新する

<select multiple="" class="form-control" ng-model="myValue" 
      ng-options="d.title for d in Companies"></select> 


<select multiple="" class="form-control"> 
<option ng-placeholder="{{myValue}}"></option> 
</select> 

そして、私のCompanyCompanies、およびコントローラでmyValue

$scope.getValues = function() { 
    $http.get('/route/to/names') 
    .success(function (data, status, headers, config) { 
     for (var i = 0; i < data.length; i++) { 
      $scope.Companies.push(new Company(data[i]['Title'],data[i]['ID'])); 
     } 
    }) 
}; 

function Company(title, last, pw, id) { 
    this.title = title; 
    this.id = id; 
} 
$scope.Companies = []; 

$scope.myValue = ''; 

そして、ここでは、その種Companies配列をfucntionです

プログラムの目的は、選択されたに従ってデータベースからデータをさらにフェッチすることです。私がmyValueをページにオプションとして設定したのは、そのアクションが達成されたかどうかを判断するためです。このような問題を解決する方法についてアドバイスをいただければ幸いです。ありがとう!

+1

'で同棲適切会社のdのために - あなたの会社のコンストラクタでは 'title'と' id'の小文字を持っているが、あなたのforループには適切なケースがあるので、正しいケーシングを使用してください。 – KreepN

+0

'myVal'の初期化を引き起こす何らかの' ActionEvent'がありませんか?あるいは、私のプログラムで与えられたデータバインディングのための選択肢の単なる選択ですか?ああ、大文字です。なぜなら、オブジェクトの特定のプロパティ「タイトル」と「ID」にアクセスしているからです。 – WakaChewbacca

+0

あなたのモデルは空の文字列にバインドされていますので、あなたのselectがidでない最初のオプションを挿入すると仮定しています。それはあなたの選択に存在することによって拘束されます。あなたはあなたのコントローラーでそれを持つことさえできませんでした。あなたが選択をしたとき、それはスコープに追加されます。 – KreepN

答えて

0
d.id as d.title for d in Companies 
  • 、あなたの会社のコンストラクタでタイトルとid小文字を持っているように、正しいケースを使用することを確認しますが、d.titleとしてd.idあなたのforループ
関連する問題