javascript - 为什么 $scope.value 仅在我们单击文本框和屏幕后才显示为预填充文本框,即使使用 Angular 的就绪功能
问题描述
我正在尝试在准备好的函数中使用 $scope.lastName="ThisIsLastname" 设置名为 lastName 的 ng-model 的值。我可以设置值,也可以设置它,因为我可以在控制台中看到,但问题是文本框本身没有出现值(文本框没有预填充)。仅当我单击文本框然后单击屏幕中的任何位置时,才会预填充文本框。
<input type="text" ng-model="lastName" /> <!-- this textbox should be prefilled when screen load using ng-model only -->
angular.element(document).ready(function () {
console.log("is ready now");
$scope.lastName="ThisIsLastname"; //set value
console.log($scope.lastName); // I can see that value has been set successfully.
});
因此,当我重新加载页面时,我可以看到该值在调用就绪函数后打印在控制台上,但是我可以看到空文本框(姓氏的值未显示在文本框中)。
但是当我第一次单击那个空文本框,然后单击屏幕上的任意位置时,会出现文本框的值。我不明白是什么让它现在出现但在调用准备函数时没有出现。
我不需要替代解决方案,我想了解为什么会这样!
解决方案
.ready() 不是 angularjs 的一部分,而是 jqlite (jquery)。因此,即使您正在分配 $scope.value,您也已经开始了一个摘要循环来更新 dom。
您可以在分配 $scope.value 后添加 $scope.$apply() 以运行摘要循环。
推荐阅读
- python - AttributeError:模块“pandas.tseries.frequencies”没有属性“is_subperiod”
- http - 用于测试的恶意 HTTP 客户端
- php - 如何将图像放在php的下拉行中
- terraform - Terraform 无法在 openstack 提供程序中创建 VM(在服务目录中找不到合适的端点)
- oracle - 如何从 oracle forms 11g 打开 PDF 文件?
- css - 猫头鹰旋转木马在最后创造了额外的空间
- javascript - 用视频代替
- c++ - 派生类指针使用 Static_Cast 指向基类对象
- d3.js - d3 mouseover tip.show 现在在函数中工作(a,b,c)
- node.js - child_process 未在 ec2 nodejs 服务器上执行