Angular - 当通过$ http接收值时,选择字段不会更新

时间:2016-03-21 00:42:34

标签: angularjs data-binding

我有两个选择字段,一个用于Month,一个用于Day(控制器名称为'contactDetails'):

<select
  data-ng-model="contactDetails.contactBasicInfo.bdmonth"
  data-ng-options="bdMonth.key as bdMonth.value for bdMonth in contactDetails.months">
  <option value="">Month</option>
</select>
<select
  data-ng-model="contactDetails.contactBasicInfo.bdday"
  data-ng-options="bdDay.key as bdDay.value for bdDay in contactDetails.days">
  <option value="">Day</option>
</select>

输出选择就好了,我可以用它们来保存信息到数据库。没有问题。 问题是当我从数据库中取出信息并希望更新选择字段以反映从数据库中提取的值时。他们没有。如果我将值硬编码到控制器中,它们将更新,但如果在$ http调用后分配值,则不会更新。

我在控制器的顶部设置了默认设置:

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

后来我调用了一个函数,然后为这两个变量赋值:

ctrl.contactBasicInfo = data.contactInfo.contactBasicInfo;

来自data.contactInfo.contactBasicInfo的所有其他数据都有效,字段也会更新,例如firstName,phone,email等。如果我将模型放在像{{ctrl.contactBasicInfo.bdmonth}}这样的html中,它会显示正确的值。所以,我知道这些值是从$ http调用正确回来的。选择不会改变以反映新值。

我缺少什么想法?

谢谢!

1 个答案:

答案 0 :(得分:0)

这是因为ngModel元素的指令<select>在绑定时使用===比较。因此0 === '0'将返回false。因此,您应该为附加到下拉列表的ngModel分配一个不是数字/整数的字符串。