首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么$scope.value在单击文本框和屏幕后才显示为预填充的文本框,甚至使用了角的就绪函数

为什么$scope.value在单击文本框和屏幕后才显示为预填充的文本框,甚至使用了角的就绪函数
EN

Stack Overflow用户
提问于 2020-05-27 17:36:16
回答 2查看 81关注 0票数 1

我试图在就绪函数中使用$scope.lastName="ThisIsLastname“设置名为”ThisIsLastname“的ng模型的值。我可以设置值,也可以设置它,因为我可以在控制台中看到,但问题是textbox本身没有出现值(textbox没有预先填充)。只有当我单击文本框并在屏幕上的任何位置单击文本框时,文本框才会被预先填充。

代码语言:javascript
运行
复制
<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.
});

因此,当我重新加载页面时,我可以看到,一旦就绪函数被调用,这个值就会打印在控制台上,但是我可以看到空的文本框(姓氏的值没有显示在文本框中)。

但是,当我首先单击该空文本框,然后单击屏幕上的任何位置时,文本框的值就会出现。我不知道是什么使它现在出现,但没有出现时,准备函数调用。

我不需要替代的解决方案,我想了解为什么会发生这种情况!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-27 18:03:08

在angularjs中,angular.elementjqLite对象。

用归零的$timeout包装代码到triger摘要循环:

代码语言:javascript
运行
复制
console.log("is ready now");

$timeout(function(){      
  $scope.lastName="ThisIsLastname";    
}); 

console.log($scope.lastName); 
票数 0
EN

Stack Overflow用户

发布于 2020-05-27 17:50:40

.ready()不是angularjs的一部分,而是jqlite (jquery)的一部分。因此,即使您要分配$scope.value,也必须启动一个摘要周期来更新dom。

您可以在分配$scope.$apply()以运行摘要周期之后添加$scope.value ()。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62049390

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档