我试图在服务中观看阵列并且真的很挣扎。
服务
angular.module('starter.entities',[]).service('Entities', function() {
var _entities = this;
// public API
this.locations = [];
document.body.addEventListener("dbready", function(){
buildModel(function(locations) {
_entities.locations = locations;
});
});
控制器
.controller('DashCtrl', function($scope, Entities) {
$scope.$watch(function() { return Entities.locations }, function() {
doSomething...
}, true);
.....
基本上它在数据库中加载数据,我想在加载数据时更新UI。
首次加载时会调用watch函数,但不会在数据加载发生时调用。
是否有一种简单的方法可以让$ watch发生?
答案 0 :(得分:1)
来自AngularJS框架之外的事件需要通过$apply
通知框架对模型的更改。
app.service('Entities', function($document, $rootScope) {
var self = this;
// public API
this.locations = [];
$document.find("body").on("dbready", function(){
buildModel(function(locations) {
self.locations = locations;
//Use $apply to notify AngularJS framework
$rootScope.$apply();
});
});
有关详细信息,请参阅AngularJS $rootScope.scope API Reference -- $apply。