あなたは適切な道を歩いているので、コントローラ間でコードを共有するために工場やサービスを使用することができます。角度サービス(およびファクトリ)ではシングルトンがあることに注意してください。アプリケーションの起動時に一度インスタンス化され、コントローラにそれを挿入すると、同じインスタンスを参照しています。次のコードを考えてみましょう:
var myApp = angular.module('myApp',[]);
myApp.service('MyService', function() {
let _someValue = 'Initial Value';
this.setValue = function(value){
_someValue = value;
}
this.getValue = function(){
return _someValue;
}
});
//First Controller Run
myApp.controller('ControllerA', function($scope, MyService) {
MyService.getValue(); //Initial Value
MyService.setValue("BRAND NEW VALUE!!!");
});
//Run after ControllerA
myApp.controller('ControllerB', function($scope, MyService) {
MyService.getValue(); //BRAND NEW VALUE!!!
});
彼女は、MyServiceがsomeValueの状態を保持していることがわかります。 ControllerAはそれにMyServiceを注入し、そのサービスのメソッドを使用して新しい値を設定することができます。これで、ControllerBのような同じ状態の後続の呼び出しに対して、更新された値が返されます。
これを確認してくださいこのドキュメントはhttp://stackoverflow.com/documentation/angularjs/1923/sharing-data/26454/sharing-data-from-one-controller-to-another-using-service#t=201704260743521596768 –