Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在angularjs中的控制器中设置工厂变量_Angularjs_Controller_Factory - Fatal编程技术网

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

在angularjs中的控制器中设置工厂变量,angularjs,controller,factory,Angularjs,Controller,Factory,我需要在控制器中设置一个工厂变量。此变量用于在我的工厂中返回保存函数的url。实际上,我将这个url构建为几个部分,但这是一个简化版本 myApp.factory('SaveDate', ['$resource', function saveDateFactory($resource, $http) { var myData = ''; return $resource(myData, {}, { query: { method: "POST", params: {},

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

myApp.factory('SaveDate', ['$resource',
function saveDateFactory($resource, $http) {
  var myData = '';    
  return $resource(myData, {}, { 
    query: { method: "POST", params: {}, isArray: false },
  });                                                                               
}]);    
我的控制器中的函数如下所示:

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();

}; 
myApp.factory('SaveDate', ['$resource',
function saveDateFactory($resource, $http) {
  var myData = {};
  myData.getMyUrl = function (urlStuff) {
    alert("in SaveDate" + urlStuff);
    return $http.get(urlStuff);
  }

  return $resource(myData.getMyUrl, {}, {  
    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();

}; 
myApp.factory('SaveDate', ['$resource',
function saveDateFactory($resource, $http) {
  var myData = {};
  myData.getMyUrl = function (urlStuff) {
    alert("in SaveDate" + urlStuff);
    return $http.get(urlStuff);
  }

  return $resource(myData.getMyUrl, {}, {  
    query: { method: "POST", params: {}, isArray: false }

添加此函数会引发以下错误:未知提供程序:myDataProvider正如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);

正如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);

在您的工厂中创建一个采用日期参数的函数,并在控制器中调用该函数在您的工厂中创建一个采用日期参数的函数,并在控制器中调用该函数我收到此错误,因为添加此-SaveDate.query不是一个函数。有什么想法吗?现在是SaveData.resource。将其命名为SaveDate.resource不会引发错误,但也无法保存数据。如何命名?如果之前是SaveDate.query,那么现在应该是SaveDate.resource.query。我非常感谢您在这方面的帮助!!有时我们会在一个简单的小过程中被绊倒。我会遇到这个错误,因为添加这个-SaveDate.query不是一个函数。有什么想法吗?现在是SaveData.resource。将其命名为SaveDate.resource不会引发错误,但也无法保存数据。如何命名?如果之前是SaveDate.query,那么现在应该是SaveDate.resource.query。我非常感谢您在这方面的帮助!!有时候,我们会被一个简单的小过程绊倒。