将$ scope变量值传递给工厂变量/函数

时间:2017-01-13 11:07:09

标签: javascript angularjs

我需要将$ scope变量的值从我的角度控制器传递到我的角度工厂,此值进一步用于进行其他计算。

控制器:

angular.module('myApp').controller('MyController',['$scope', function($scope)
{
    $scope.selectedValue = function(value)
   {
      $scope.valueToSend = value + 1000;
   }
}]);

Factroy:

angular.module('myApp').factory("Factory", ["$q","$localStorage", function(q, $localStorage)
{
   var functionToGetValue = function()
   {
    return value;
   }
}
var x = { .... }
return x;
}]);

'价值'在我的控制器中只是一个被选中的单选按钮。 在我的工厂中,变量x具有调用我的工厂函数functionToGetValue的其他函数。

有没有什么方法可以将$ scope.valueToSend传递给我的工厂,以便我可以在那里进一步使用它?

2 个答案:

答案 0 :(得分:2)

在您的工厂中有一个setter / getter方法,您可以使用该方法设置新值,当您想要重复使用它时,使用相同的方法来获取它,如下所示:

not called from derived B
called from derived B

现在,从您的控制器,

angular.module('myApp').factory("Factory", ["$q","$localStorage", 

function(q, $localStorage)
{ 
   this.value = "";
   return {
    inputValue : function (value) {
       if(value)
         this.value = value;
       else
         return value;
    }   
  }
}
var x = { .... }
return x;
}]);

答案 1 :(得分:1)

angular.module('myApp').factory("Factory", ["$q","$localStorage", function(q, $localStorage)
{
   var value;
   var x = {
     setValue = function(val) {
         value = val;
     };
     functionToGetValue = function()
     {
        return value;
     }
   }
   return x;
}]);

像上面的代码一样创建工厂,并在控制器中使用该工厂。使用Factory.setValue(valueToPass)Factory.functionToGetValue()来获取值传递值。