2017-01-13 4 views
0

Мне нужно передать значение переменной $ 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 на мою фабрику, чтобы я мог использовать ее там сам?

+0

Что случилось с передачей значения заводской, а затем вернуть его обновление контроллеру? –

+0

Я не уверен, как передать это значение фабрике, и я хочу избежать использования $ rootScope. – 221b

ответ

2

Есть присваиватель/геттер в вашем заводе, с которой вы можете установить новое значение, и когда вы хотите использовать его, использовать тот же метод, чтобы получить его, как показано ниже:

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; 
}]); 

Теперь из вы контроллер,

angular.module('myApp').controller('MyController',['$scope', 'Factory' 

function($scope, factory) 
{ 
    $scope.selectedValue = function(value) 
    { 
     $scope.valueToSend = value + 1000; 
     factory.inputValue($scope.valueToSend); // this will set the new value in the factory. 
    } 

console.log(factory.inputValue()) // this will get the value from the factory. 

}]); 
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(), чтобы получить значение прошедшего значения обратно.