【发布时间】:2016-03-21 00:42:33
【问题描述】:
我有两个选择字段,一个用于月,一个用于日(控制器名称为“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 的所有其他数据都有效并且字段会更新,例如名字、电话、电子邮件等。如果我将模型放在 html 中,例如{{ctrl.contactBasicInfo.bdmonth}},它将显示正确的值。所以,我知道这些值是从 $http 调用中正确返回的。选择不会改变以反映新值。
任何想法我缺少什么?
谢谢!
【问题讨论】:
-
在这种情况下会使用
track by帮助吗? -
@JanR 我不认为我们在谈论同一件事。构建选择的数组永远不会改变,只有选定的值会改变。
-
@Lex 我不知道
track by在这里会有什么帮助。如果我在代码中写入新值以替换默认值 0,则选择会更新。因此,双向绑定似乎工作正常。我只是不知道为什么它没有从 $http 返回中检测到新值。