2016-11-20 87 views
3

我想传递数据的很大一部分来自控制器A到控制器Bsetter和getter采用了棱角分明的服务/工厂

所以我做了这个厂

angular.module('MyApp') 
    .factory('holdCustomCover', function($scope, img_data) { 
     return { 
      save: $scope.img_data = img_data; 

      get: $scope.img_data; 
     } 
    }) 

我在做对吗?所以稍后在控制器A中该怎么办?像 holdCustomCover.save(myImgDataHere)

然后在控制器B我做holdCustomCover.get()我可以得到img值吗?

回答

1

您不能在factory/service功能内注入$scope。服务/工厂是单身对象,负责数据共享。你只能在那边使用公共代码。

在你的代码中,你必须为getter & setter创建一个函数,它将返回img_data这是holdCustomer工厂的私人数据。

angular.module('MyApp') 
    .factory('holdCustomCover', function() { 
     var img_data; //private data 
     return { 
      //setter 
      save: function (data){ 
       img_data = data; 
      }, 
      //getter 
      get: function(){ 
       return img_data; 
      } 
     } 
}) 
+0

为什么'get'需要是一个函数?不能只是'get:img_data'? –

+0

@JennyMok否,完成任务的方式。它只会考虑初始值('undefined'),这又取决于你如何完成所有的绑定。每次都有更好的functino和返回变量。虽然如果你这样做..它不会被称为吸气者.. –

+0

我明白了。那么这里最好的做法是什么?人们通常如何做到这一点?我假设我需要一个服务/工厂来共享数据,但我不知道实际上应该做些什么。 –