2016-03-21 12 views
0

を介して受信されたとき、私は2つの選択フィールド、月間1およびデーのための1つを(名前のようなコントローラは、「するcontactDetails」です)が更新されません。ちょうど良いものを選択し、それらを使って情報をデータベースに保存することができます。そこに問題はありません。 問題は、データベースから情報を引き出し、選択フィールドを更新してデータベースから取得した値を反映させたい場合です。彼らはしません。値をコントローラにハードコードすると、それらは更新されますが、$ http呼び出し後に値が割り当てられている場合は更新されません。

私はデフォルトを設定するには、コントローラの上部にこれを持っている:

ctrl.contactBasicInfo.bdmonth = 0; 
ctrl.contactBasicInfo.bdday = 0; 

以降、私はそれら二つの変数に値を代入する関数を呼び出す:

ctrl.contactBasicInfo = data.contactInfo.contactBasicInfo; 

他のすべてdata.contactInfo.contactBasicInfoから出てくるデータはfirstName、phone、emailなどのようにフィールドが更新されます。​​のようにhtmlにモデルを置くと正しい値が表示されます。だから、私は値が$ httpの呼び出しから正しく戻ってくるのを知っています。選択項目は新しい値を反映するように変更されません。

アイデアは何ですか?

ありがとうございます!

+0

重複:http://stackoverflow.com/questions/19872387/in-angularjs-how-do-you-get-a-select-to-refresh-when-the-array-for-ng-options – JanR

+0

この場合、 'track by'ヘルプを使用しますか? – Lex

+0

@JanR私たちは同じことを話しているとは思わない。選択を構築する配列は決して変更されず、選択された値のみが変更されます。 – Mattaton

答えて

0

<select>エレメントのngModelディレクティブは、バインディング時に===の比較を使用するためです。したがって、0 === '0'はfalseを返します。したがって、ドロップダウンリストに添付されているngModelには、数値/整数ではない文字列を割り当てる必要があります。

+0

したがって、数字以外の月の日にはどのような値を使用しますか?私が言ったように、デフォルトのbdmonth値の= 0〜= 3を変更すると、選択はMarchに変わります。しかし、httpが返って値を3に設定すると、何もしません。値の数字はうまくいくのですよね?それとも、番号の周りに引用符を付ける必要があると言っていますか? – Mattaton

+0

$ http呼び出しで返された整数に対してjavascriptのtoString()関数を使用します。 – amcpanaligan

+0

Gotcha。私はそのショットを与えるでしょう。ありがとう。 – Mattaton

関連する問題