将动态创建的网址从我的控制器传递到我的工厂

时间:2016-06-02 15:47:11

标签: angularjs controller factory

我可以将变量从我的控制器传递到我的工厂。我无法做的是在我的控制器中的新URL字符串中动态设置值,并让工厂看到此值而不是原始缓存的值。 Mu控制器设置SaveDate.setMyData中的值,如下所示:

//this function saves the date change
vm.myFunction1 = function ($resource) {

   vm.myDate = '/api/Product/SetMilestoneDate/vm.officeKey/vm.whichMilestone/vm.yearSelected/vm.monthSelected/vm.daySelected';

   SaveDate.setMyData(vm.myDate);

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

在我的工厂setMyData中提取这个新值。(这是代码)

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

  //this grabs the data we need for the url below
  function setMyData(data) {
    myData = data;       
  }

  return {

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

我遇到的问题是Angular正在拉空字符串值(缓存值)而不是新值。

一个选项是调用控制器函数,我在此位置设置值:

resource: $resource(myControllerFunction(), {}, {
      query: { method: "POST", params: {}, isArray: false }

但是我没有能够在没有与范围和未定义相关的各种错误的情况下调用控制器函数。在任何其他语言中传递此值非常简单。

如果有人知道如何覆盖当前变量的缓存值或如何在此位置调​​用控制器函数,我将不胜感激。谢谢你的帮助!

1 个答案:

答案 0 :(得分:2)

资源是在工厂注入时创建的,并且使用scale[len(scale)][0]原始值。

如果应该按需创建资源,则必须使用函数进行包装。

myData