複数の場所および複数のコントローラー内で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
});
これを行うためのより良い方法はありますか?基本的に、サイト全体でクッキーの値を利用できるようにしたい
両方のコントローラーに$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
を使用しないでください。同じためにサービス/工場を使用してください
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
});