我确定这是一个非常普遍的问题,但由于某种原因,我无法找到可行的解决方案。
我有火力地堡实时数据库和角1.一个非常简单的设置我有这个指令在我的HTML
<div id="usersListWrapper" ng-controller="UsersListController" ng-init="loadUsersList()">
然后我loadUsersList()
方法里面,我做出火力地堡调用数据库获取数据
$rootScope.users = [];
var usersRef = firebase.database().ref('/users');
usersRef.on('value', function(snapshot) {
console.log("loaded users list");
var users = snapshot.val();
updateUsersTable(users);
});
后来终于,里面updateUsersTable(users)
,更新我的$rootScope.users
变量
var updateUsersTable = function(users) {
$.each(users, function(key, value) {
var user = {
username: key,
...
}
$rootScope.users.push(user);
}
}
然而,即使正确$rootScope.users
变量更新(我验证了使用Chrome的devtools),html的不更新:提前/
道歉,如果这是一个重复的问题。帮助将不胜感激。
这听起来像你需要运行一个摘要循环。 $ scope。$ apply(function(){$ rootScope.users.push(user);}); – LT56
@ LT56从我读的内容来看,手动调用'$ apply'是不好的。但是,我也尝试过,并且每次向列表添加内容时都会引发问题。我一直得到这个:'错误:$应用已经在进行中' – Bazinga
我会把范围。$应用于事件监听器b/c AngularJS不知道事件何时被触发,因为它不管理它。即:usersRef.on('value',scope。$ apply(function(){<您的代码在这里}}); – flyer