web-dev-qa-db-ja.com

$ rootScopeが定義されていません

複数の場所および複数のコントローラー内でCookie値を使用しようとしていますが、$ rootScopeが定義されていませんというエラーが表示されます

コードは次のとおりです。

capApp.controller('cookieCtrl', ['$scope','$cookies', function($scope, $rootScope, $cookies) {
  // set variable for nav
  $rootScope.cookieSet = $cookies.user_id;
}]);

capApp.controller('mainController', function($scope, $location) {  
  $scope.user_id = $rootScope.cookieSet; // set global var
});

これを行うためのより良い方法はありますか?基本的に、サイト全体でクッキーの値を利用できるようにしたい

15
Darren Sweeney

両方のコントローラー$rootScope依存関係を追加できませんでした

コード

capApp.controller('cookieCtrl', ['$scope','$rootScope', '$cookies', 
  function($scope, $rootScope, $cookies) {
  // set variable for nav
  $rootScope.cookieSet = $cookies.user_id;
}]);

capApp.controller('mainController', ['$scope', '$location', '$rootScope', 
  function($scope, $location, $rootScope) {  
  $scope.user_id = $rootScope.cookieSet; // set global var
});

)依存性注入の配列注釈 を確認して、JavaScriptのミニフィケーションの実行中にコードが破損しないようにします。

サイドノート:-アプリケーションの共通機能/データを共有するために$rootScopeを使用しないでください。同じためにサービス/工場を使用してください

24
Pankaj Parkar

MainControllerに$ rootScopeを挿入しませんでした

capApp.controller('mainController', function($scope,$rootScope, $location) {  
  $scope.user_id = $rootScope.cookieSet; // set global var
});

更新:

最初に、コントローラー間のブリッジのように機能するサービスを作成します。

1)Cookieセットを追加するために使用されるaddCookie。

2)クッキーセットを取得するために使用されるgetCookie。

capApp.factory('user', function() {
  var cookieSet;

  var addCookie = function(val) {
      cookieSet=val;
  }

  var getCookie = function(){
      return cookieSet;
  }

  return {
    addCookie : addCookie,
    getCookie : getCookie 
  };

});

capApp.controller('cookieCtrl', ['$scope', 'user', '$cookies', function($scope, user, $cookies) {
  // set variable for nav
  user.addCookie($cookies.user_id);
}]);

capApp.controller('mainController', function($scope, $location,user) {  
  $scope.user_id =user.getCookie(); // set global var
});
4
squiroid