2013-04-30 36 views
5

プロジェクトでangularjsを使い始めました。ここに私はクエストを持っています。 は私がドロップダウンリストにすべての銀行を反復以下のHTMLAngularjs選択した項目を選択してください。

<div> 
<label for="lastname">Bank Name :</label> 
<select ui-select2 ng-model="bank.id"> 
    <option></option> 
    <option ng-repeat="bank in banks" value="{{bank.id}}">{{bank.text}}</option> 
</select> 
</div> 

を持っています。ユーザーがSAVEを選択して押します。私はidを正しく取得してDBに保存しました。ユーザーが戻ったとき、私はドロップの値を彼が選択した値に設定できませんでした。私はcontroller.js私はXX銀行であるbankID 11 letssay、それを設定するにはどうすればよい

$http.get('/AdServerLongTail/api/user'). 
success(function(data, status, headers, config) { 
    if(status == 200){ 
     $scope.id = (data["id"]);// user id     
     $scope.bank.id = (data["bankId"]);     
    } 
}). 
error(function(data, status, headers, config) { 
    alert("fail"); 
}); 

でこれを行いますか?

答えて

15

このようにng-repeatは使用しないでください。 ngOptionsをご覧ください。 http://docs.angularjs.org/api/ng.directive:select

+2

なぜですか? ui-select2はng-optionsで動作しません。 – shapeshifter

+0

お聞きします。しかし、単に外部のライブラリがそれをサポートしていないからといって、それが正しいというわけではありません。 – Lander

+4

@Lander、それは間違いだと私は同意しますが、残念ながらselect2を使用する唯一の方法です。あなたは何か違うものを見つけたり、このようにしておくことができます。ディレクティブの背後にあるアイデアは、内部的に動作する方法を公開せずにAPIを提供しているので、s2にアクセスするためのより良い指示を書くことをお勧めします。理想的な世界では、ディレクティブAPIはng-selectで動作するはずです。 ng-repeatを使うと何も壊れません。私はそれをハックとは考えません。 select2が恐ろしい角度になっている可能性があります。 –

2

私はそれを見つけたので、どうやってそれを逃したのでしょうか。ここに正しいコードがあります。

<div> 
<label for="lastname">Bank Name :</label> 
<select ui-select2 ng-model="bank"> 
    <option></option> 
    <option ng-repeat="bank in banks" value="{{bank.id}}">{{bank.text}}</option> 
</select> 
</div> 

$http.get('/AdServerLongTail/api/user'). 
success(function(data, status, headers, config) { 
    if(status == 200){ 
     $scope.id = (data["id"]);// user id     
     $scope.bank = (data["bankId"]);     
    } 
}). 
error(function(data, status, headers, config) { 
    alert("fail"); 
}); 
+0

Angular UIなしでこれを行う方法はありますか?私もそれに取り組んでいます。 – elliottregan

+0

オプションで繰り返し入れ子を使用すると問題が発生し、通常の角度結合で正しく機能しません。なぜこのテクニックが他のAngular DBに失敗する原因になったのか分かりませんでした。 – taudep

+0

正しい答えとして他のマークを付けてください。 – uriDium

8

これは少し新しくて苦労しました。ここことない簡単なタグがあり、そしてそれはNG-選択される:

<option ng-repeat="bank in banks" value="{{bank.id}}" ng-selected="'11' == bank.id" >{{bank.text}}</option> 

しかし、再び:いけないそれをLanderの助言として、この方法を実行します。むしろにng-optionsを使用してください。そうしないと、モデル内のdropdown.assign bank.selected.idで空の最初のオプションを使用してしまいます。(ここでは、あなたのケースでNG-モデルがbank.id.ある)

<select ng-model="bank.selected.id" ng-change="someAngularfunction()" ng-options=" (''+bank.id) as (bank.id +' - '+ bank.text) for bank in banks"> 
        <option value="">Select one</option> 
</select> 

また、オプションの値はバンクを表示されませんことを覚えておいてください-idオプションではなく、option value = "0"または "1"または "3"をインデックスとして表示します。ただし、ドロップダウンで選択した値はbank.selected.idモデルにバインドされます。たとえば、bank.id = 11(XX銀行)のようにドロップダウン値が選択されている場合、bank.selected.idは「11」に設定されます。

関連する問題