我预先填充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代码识别预先填充的值?
答案 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(){})可以工作,但不建议使用。按照建议操作并使用内置模型设置值。