我正在使用 AngularJS 和 angularFire 来显示我的任务列表:
<ul ng-repeat="tool in tools">
<li>{{tool.name}} {{ tool.description}}</li>
</ul>
var toolRef = new Firebase(dbRef + "/tools/" + toolId);
toolRef.once('value', function(snapshot) {
console.log(angular.toJson(snapshot.val()));
$scope.tools.push(snapshot.val());
//$scope.$apply();
});
http://jsfiddle.net/oburakevych/5n9mj/11/
代码非常简单:我将一个“站点”对象绑定到我的 Firebase 数据库。该对象包含相关工具的 ID 列表。然后我在 $scope.tools 变量中加载每个工具并使用 ng-repeat 在 UI 中显示它们。但是,每次我将新条目推送到我的 $scope.tools 时,DOM 都不会更新。我必须在每次推送后调用 $scope.$apply 来触发摘要 - 请参阅第 18 行的注释,然后它就可以工作了。
这真的很奇怪,因为我现在播了好几次,而且只使用与 angularFire 绑定的范围变量。
谁能解释一下?我做错什么了吗?