angular.js为什么双向绑定要点一下才生效
showCaptcha设置了true为什么要在页面上点击一下才能显示,和vue双向绑定有区别吗?用的1.2
<div class="ipt_con" ng-show="login.showCaptcha"></div>
$scope.login = {
showCaptcha: false,
}
$scope.connect = function () {
Service.login(phone, $scope.login.password).then(function (data) {
$scope.logining = false;
if (data.code == 0) {
...
} else {
$scope.login.showCaptcha = true;//这里置为了true为什么div需要点击才能显示,
console.log( $scope.login.showCaptcha)
}
})
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
Angularjs里面的脏检查机制在处理异步流的时候可能无法监测,这个时候使用$scope.$apply();可以强制检测,而关于点一下就可以,是因为angularjs监听了所有的事件,包括xmlHttpRequest的事件,并且在事件里面调用了$scope.$apply(),所以点一下其实也是调用了$scope.$apply()
试一下。
主要是因为Angularjs脏治检测没有检查到,可以使用$scope.$apply(),但是不推荐使用这个,因为$apply是从根组件向下执行进行脏值检测。推荐使用$scope.$digest(),$digest是从当前组件向下进行脏治检测。