2017-01-13 6 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を私の工場に渡すことができる方法はありますか?

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

今から:

+0

valueをfactoryに渡してから、そのアップデートをコントローラに返すと何が問題になりますか? –

+0

私はその値を工場に渡す方法がわからないので、$ rootScopeの使用を避けたいと思います。 – 221b

答えて

2

は、新しい値を設定することができますし、それを再利用する場合、下記のようにそれを得るために同じ方法を使用しているとあなたの工場でセッター/ゲッターメソッドを持っていますあなたは、コントローラ、

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()を使用して値渡し値を戻します。