Я использую 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. Объект содержит список идентификаторов соответствующих инструментов. Затем я загружаю каждый инструмент в переменную $scope.tools и использую ng-repeat, чтобы показать их в пользовательском интерфейсе. Однако каждый раз, когда я добавляю новую запись в свой $scope.tools, DOM не обновляется. Я должен вызывать $scope.$apply для запуска дайджеста после каждого нажатия — см. закомментированную строку 18, и тогда это работает.
Это действительно странно, так как я сею это несколько раз и только с переменными области видимости, связанными с angularFire.
Кто-нибудь может это объяснить? Я делаю что-то не так?