服务中的角度表阵列

时间:2016-08-23 01:03:18

标签: angularjs

我试图在服务中观看阵列并且真的很挣扎。

服务

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发生?

1 个答案:

答案 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