AngularJS - 使用服务工厂使用来自另一个控制器的$ resource更新数据

时间:2014-03-12 23:05:21

标签: angularjs service factory

我遇到了$ angular of angularjs的问题

我有一家服务工厂:

angular.module('publicApp').factory('Model', function ($resource) {
   var totalStock = $resource('./resource/data/totalStock',{},{}});
   return {
     totalStock : totalStock 
          }
});

控制器从服务中获取数据:

angular.module('publicApp')
 .controller('ManageCtrl', function ($scope, Model) {
  $scope.total = Model.totalStock.query();
 });

然后,在另一个控制器中,当一个函数内部成功时,我回想起服务:

angular.module('publicApp')
 .controller('ActionCtrl', function ($scope, Model) {

   $scope.checkout = function () {
   $http.post('/resource/action/sold', formData).success(function (resp) {
    if (resp.resCode == -1) {
      alert(resp.result);
      return;
    }
    console.log('sold!');   
    Model.totalStock.query();
     });
   }
});

我的想法是,当Model.totalStock.query()服务召回时,ManageCtrl的$ scope.total值也会更新。有谁建议我以正确的方式做到这一点?

1 个答案:

答案 0 :(得分:2)

我不确定,但这可行:

您可以创建两个工厂:

' ModelRessource'工厂仅供您使用'型号'工厂。

angular.module('publicApp').factory('ModelRessource', function ($resource) {

    var totalStock = $resource('./resource/data/totalStock',{},{}});
    return {
         totalStock : totalStock 
      }
});

然后,您使用'模型'工厂与您的资源互动。如果将$ scope绑定到Model.totalStack,则每次调用refreshTotalStack()时,都应该更新totalStack。

angular.module('publicApp').factory('Model', function (ModelRessource) {

    var data = {};
    data.totalStack = {};

    return {

       totalStack : data.totalStack,

       refreshTotalStack : function () {
           ModelRessource.totalStock.query(function (resp) {
               data.totalStack = resp;
               return data.totalStack;
           });
       }
   }
});