在angularjs中在控制器中设置工厂变量

时间:2016-05-16 22:17:12

标签: angularjs controller factory

我需要在控制器中设置工厂变量。此变量用于在我的工厂中返回保存功能的URL。我实际上将这个url构建为几个部分,但这是一个简化版本。

UpdateText

我的控制器的功能如下所示:

myApp.factory('SaveDate', ['$resource',
function saveDateFactory($resource, $http) {
  var myData = '';    
  return $resource(myData, {}, { 
    query: { method: "POST", params: {}, isArray: false },
  });                                                                               
}]);    

我尝试过使用对象而不是原始对象,但它也没有用。我已经测试过,我的SaveDate.myData的值正在准确设置。如果我在工厂中声明变量的地方硬编码值,它将完美保存。我只是无法将变量从我的控制器成功传递到我的工厂。我尝试了很多种方法,包括使用$ watch。感谢您的帮助!

当我添加这样的函数时:

vm.myFunction1 = function ($resource) {

  vm.myDate = '/test/MyProduct/SetSalesDate/988093099/108/2016/05/21';

  SaveDate.myData = vm.myDate;

  //this should save the date for milestones  
  SaveDate.query();
  vm.cleanUp();

}; 

添加此函数会引发以下错误:未知提供程序:myDataProvider< - myData< - UserListController

1 个答案:

答案 0 :(得分:4)

您需要在工厂中创建一个功能,因为 Clint 在评论中说明了这一点。

myApp.factory('SaveDate', ['$resource',
function saveDateFactory($resource, $http) {
  var myData = '';

  function setMyData(data) {
    myData = data;
  }

  return {
    setMyData: setMyData,
    resource: $resource(myData, {}, { 
      query: { method: "POST", params: {}, isArray: false },
    })
  };                                                                           
}]);

在您的控制器中:

SaveDate.setMyData(vm.myDate);