3

異なるモジュールに同じサービスを使用しようとしています。多くのモジュールがあるので、親モジュールにそれらを注入しようとしました。このようなもの:

var app=angular.module('myapp',['module_1','module_2',....,'module_n']);


var module_1=angular.module('myapp1',[]);
var module_2=angular.module('myapp2',[]);
var module_3=angular.module('myapp3',[]);
.
.
.
var module_n=angular.module('myappN',[]);

n 個のモジュール すべてに共通のサービスは次のようになります。

.service('myService',function(){
...doing something here...
});

現在、すべてのサブモジュールでこのサービスを使用する方法がわかりません。
このサービスをどのモジュールに関連付けるべきですか?
やってみapp.service('myService',function(){...})ましたが、うまくいきませんでした。
どこが間違っていますか?

EDIT 1:さらに、 service
を使用して、これらすべてのサブモジュールと変数を共有しようとしています。変数を共有するサービスを使用して正しいことを行っているのか、このジョブに プロバイダーまたはファクトリを使用する必要があるのか​​ わかりません。

EDIT 2:
これらのリンクを見つけましたが、答えを把握できませんでした。それらを参照して、私の答えを提供してください
AngularJSの複数のモジュール間で変数を共有する方法
異なるモジュールにあるコントローラー間で変数を渡す

4

1 に答える 1

0

Service2 つの 間で特定の変数を共有するために を構築するとしますControllersService次の操作を使用できるはずです。

MyService.js

// Lets suppose you want to share a certain variable between controllers
angular
.module('myApp')
.service('myService', function () {

  // If you wish you can inject and use $scope
  var vm = this;
  // Variable to share
  vm.sharedItem;

  // Method to set a certain value into a variable
  function setItem(item){
   vm.sharedItem = item;
  }

  // Method to get that variable
  function getItem(){
    return vm.sharedItem;
  }

  // Exposing your methods
  return {
    setItem     : setItem
    getItem     : getItem
  }
});

SetController.js

angular
.module('myApp')
.controller('SetController', SetController);

  // Inject your Service
  function SetController(myService) {

    var vm = this;
    // variable used to set the value
    vm.setMe = 'hello';

    // Call `setItem()` method from `myService` -> sharedItem will get setMe value
    myService.setItem(vm.setMe);

    console.log("Set shared item "+vm.setMe);
  };

GetController.js :

angular
.module('myApp')
.controller('GetController', GetController);

  // Inject your Service
  function SetController(myService) {

    var vm = this;
    // variable used to get shared the value
    vm.getMe= null;

    /* Call `getItem()` method from `myService` to get the shared 
     * value and assign it to `getMe`*/
    vm.getMe = myService.getItem();

    console.log("Got shared item "+vm.getMe);
};

this.varを使用してビューにアクセスできることを思い出してくださいcontrollerName.var。特定のコントローラーを使用していることを確認するのは良い解決策です。ご希望があればいつでもご利用いただけ$scopeます。

お役に立てば幸いです。

于 2016-07-14T17:49:39.773 に答える