Javascript 在promise.then()中赋值时不更新绑定
在我的angular应用程序中,我有一个Javascript 在promise.then()中赋值时不更新绑定,javascript,angularjs,commonjs,Javascript,Angularjs,Commonjs,在我的angular应用程序中,我有一个$scope变量user和一个名称 如果我在单击时将此变量设置为“test”: 带函数 $scope.user = { name: 'blank' } $scope.setUser = function(name) { $scope.user.name = name } 这个很好用。但是,如果我在一个promise.then()*中设置了这个变量,它似乎正确地设置了变量,但是Angular不会在视图中更新它,直到我对$scope.user执行
$scope
变量user
和一个名称
如果我在单击时将此变量设置为“test”:
带函数
$scope.user = {
name: 'blank'
}
$scope.setUser = function(name) {
$scope.user.name = name
}
这个很好用。但是,如果我在一个promise.then()
*中设置了这个变量,它似乎正确地设置了变量,但是Angular不会在视图中更新它,直到我对$scope.user执行了另一个操作
现在调用一个新函数,startogin()
这样做之后。视图中的{{user.name}
字段仍然为“空白”。
我还测试了以下内容:
在我将其登录到控制台时处于活动状态,并且在函数中运行良好$scope
- 另外,日志记录
正确返回,表明变量已更改$scope.user
- 有趣的是,在我第二次单击时,视图终于改变了
- 我也可以通过添加
来解决这个问题,但这似乎是解决这个问题的错误方法$scope.$apply()
*我正在使用的语法与相似或相同,双向绑定在一个角度变化过程中得到更新。这些循环由绑定到指令的DOM事件或参与Angular生态系统的其他实体触发 所以Angular提供的“魔力”就是自动触发消化循环。您可以使用
$scope.apply
触发摘要循环:
promise.then(function(response) {
$scope.$apply(function() {
console.log('success');
$scope.setUser('test');
});
});
这是处理第三方库时的推荐方法。实际上是
$scope.$apply
,但如果不是这样,答案应该会起作用。现在是2016年,我发现这个错误:$digest已经在进行中。今天,$scope已经被弃用了。如何将其与vm一起使用?
promise.then(function(response) {
$scope.$apply(function() {
console.log('success');
$scope.setUser('test');
});
});