页面并不总是识别具有 ES6 承诺的 ng-if/new $scope变量



奇怪的问题 -

因此,我运行加载用户配置文件的代码。在代码期间,它会检查查看个人资料的人是否是"朋友"。如果是,它使用 NG-IF 并设置一个 $scope.button 以包含新文本。

但是 - 通常我需要多次刷新页面才能让 Angular/http 服务器看到这一点。我可以在控制台中看到连接正确.log但问题仍然存在。如果我不需要刷新,我会看到"闪烁",并观察页面加载时范围的变化。

有没有办法防止这种情况?

我试过$scope.apply((;。(从Firebase提取数据(

由于承诺来自 AngularJS 框架之外,因此框架不知道模型的变化,也不会更新 DOM。 使用 $q.when 将外部承诺转换为 Angular 框架承诺。

var ref = x.child(userLoggedIn).child(allUsersArray[i].uid)
var refPromise = $q.when(ref.once('value'));

使用与 AngularJS 框架及其摘要周期正确集成$q服务承诺。

$q.何时

将可能是

值或(第三方(当时可承诺的对象包装为$q承诺。当您处理的对象可能是也可能不是承诺时,或者如果承诺来自不可信的源,这很有用。

-- AngularJS $q Service API 参考 - $q.when


我正在使用Promises.all,$q似乎已经修复了这种行为。

在后台,$q.all对对象或数组中的每个承诺都使用 $q.when。这也会将外部承诺转换为 Angular 框架承诺。

最新更新