Angularjs 如何从两个控制器中的一个服务使用完全相同的阵列?

Angularjs 如何从两个控制器中的一个服务使用完全相同的阵列?,angularjs,service,Angularjs,Service,我有以下代码: 控制器: function deleteRootCategory(){ $scope.rootCategories[0] = ''; } function getCategories(){ categoryService.getCategories().then(function(data){ $scope.rootCategories = data[0]; $scope.subCategories = data[1]; $scope.titles

我有以下代码:

控制器:

function deleteRootCategory(){
 $scope.rootCategories[0] = '';
}

function getCategories(){
  categoryService.getCategories().then(function(data){
    $scope.rootCategories = data[0];
    $scope.subCategories = data[1];
    $scope.titles = data[2];
  });
}

getCategories();
服务:

var getCategories = function(){
    var deferred = $q.defer();
    $http({
        method:"GET",
        url:"wikiArticles/categories"
        }).then(function(result){
          deferred.resolve(result);
        });
    }
    return deferred.promise;
}
html:


{{root}}
{{sub}}
{{title}}
html2:

<div ng-controller="controller">
 <div ng-include src="html"></div>
 <button ng-click="deleteRootCategory()">Del</button>
</div>

德尔
当我单击deleteRootCategory按钮时,数组$scope.rootCategories会更新,但视图永远不会更改

我错过了什么


谢谢

当服务中的值更改时,您可能需要设置广播事件。像这样的

.service("Data", function($http, $rootScope) {
  var this_ = this, 
      data;

  $http.get('wikiArticles/categories', function(response) {
    this_.set(response.data);
  }

  this.get = function() {
    return data;
  }

  this.set = function(data_) {
    data = data_;
    $rootScope.$broadcast('event:data-change');
  }

});
让两个控制器等待事件,并使用集合对阵列进行任何更改

$rootScope.$on('event:data-change', function() {
    $scope.data = Data.get();
}

$scope.update = function(d) {
  Data.set(d);
}

没有语言可以描述我现在的感受!非常感谢!:)
$rootScope.$on('event:data-change', function() {
    $scope.data = Data.get();
}

$scope.update = function(d) {
  Data.set(d);
}