预填充字段,angularjs控制器无法识别值

时间:2015-07-14 02:04:28

标签: angularjs

我预先填充Facebook API中的字段:

$("#inputParentName").val(response.name);
$("#inputParentEmail").val(response.email);
$("#inputParentBirthday").val(response.birthday);

在我的AngularJS服务中,我有以下功能:

vm.addParent = function () {
    alert(vm.inputParentName);
    alert(vm.inputParentBirthday);
    alert(vm.inputParentEmail);

调用此函数时,预先填充的字段在警告框中显示为“未定义”。但是,如果我输入值,我会得到输入的实际文本。

我需要做什么才能让我的AngularJS代码识别预先填充的值?

2 个答案:

答案 0 :(得分:1)

您正在使用jQuery填充输入字段。您应该做的是填充分配给输入字段的ng模型的角度范围值

<input type="text" name"inputParentName" id="inputParentName" ng-model="vm.inputParentName">
<input type="text" name"inputParentEmail" id="inputParentEmail" ng-model="vm.inputParentEmail">
<input type="text" name"inputParentBirthday" id="inputParentBirthday" ng-model="vm.inputParentBirthday">
不应该使用jQuery填充

,而是使用angular的范围分配值。 (此代码可能会出现在您的控制器中)

$scope.vm = {
  'inputParentName': response.name,
  'inputParentEmail': response.email,
  'inputParentBirthday': response.birthday
}

然后值会出现在预期的位置....

(我猜你的html和javascript,但这是一个近似猜测)

帮自己一个忙,避免尝试与jQuery和Angular结婚 - 这可以做到,但没有必要。

答案 1 :(得分:1)

为了进一步说明您的值未分配给模型的原因是Angular不知道它们存在。通过查询元素而不是ngModel更新字段会绕过Angular的数据绑定。要么是要求范围。在分配之后消化或将分配放入$ scope。$ apply(function(){})可以工作,但不建议使用。按照建议操作并使用内置模型设置值。