通过服务而不是在Angular JS中更新数据

时间:2014-06-26 12:13:43

标签: angularjs angularjs-directive angularjs-scope angularjs-ng-repeat angular-services

我写了一个服务来在控制器之间共享和更新数据

myApp.service('Physician',function($http){
 var physicians = [];

 var refresh = function(fetch) {
  physicians = []

  $http({
   url: '/provider/',
   method: 'GET',
  }).success(function (response) {
   $.each(response, function(index, value){
     physicians.push(value);
   });
   console.log(physicians);
  });
 }


return {
 refresh: refresh,
 all: physicians
};
})

我在控制器中包含了上述服务

function physicianController($scope, $http, Physician) {
  $scope.physicians = Physician.all
}

现在我有另一个控制器,它共享Physician服务并在其中调用刷新功能。

function conditionController($scope, $http, Physician) {
  $scope.add = function() {
   Physician.refresh();
  }
}

一旦刷新函数被调用,我希望physicianController中的$ scope.physicians得到更新,但不是,任何提示都会有所帮助。

1 个答案:

答案 0 :(得分:2)

@Sergiu Paraschiv的答案:physicians = []基本上为医生变量分配一个新的参考。 AngularJS依赖它来保持相同的引用,以便能够跟踪变化。因此,您需要清空数组,而不是重新初始化它。 A.splice(0,A.length)应该可以工作