navbarに使用するコントローラで変数をリロードします。AngularJSリロードコントローラ変数
私は各ビューのコントローラを持っています。私はログインした後にログインするためにコントローラ「loginCtrl」を使用します。「rootController」にvarセットをリロードします。
ng-ifに変数を使用して、ナビゲーションバーのボタンログインとログアウトを切り替えますが、この変数(rootController内)はファクトリ関数を呼び出すようになっています。
工場の値を変更すると、変数が1回だけ変更されるという問題があります。解決策は、rootをリセットしてvarをリセットするだけです。インターネットに検索すると、$ route.reload()が見つかりました。 私はrootControllerで関数を作成していると私はそれを使用します。
$rootScope.reload = function(){ $timeout(function() {
$route.reload();
}, 0);
};
が、私は他のコントローラでのアプリの負荷の無限大を呼び出すとき。
解決方法
EDIT:
angular.module('appModule',[])
.controller('AppCtrl',function ($scope,$rootScope,UserLogged){
$scope.isLogged = UserLogged.isLogged();
$scope.user = UserLogged.get();
});
.config(...) // To configure route, one route have loginCtrl as controller
.controller('loginCtrl',function($scope,$http,UserLogged){
$http.get(..).sucess(function(data){UserLogged.set(data)})
// call a WS to setup the factory UserLogged
)
.factory('UserLogged',function(){
var userLogged
var isLogged
// set and get method
}
すべての作業罰金が、私は工場でisLoggedのVARを更新したときにアプリがAppCtrlにscope.isLogged $更新されません。解決策は、UserLogged.get()を呼び出して$ scope.isLoggedを新しい値にリセットするためにAppCtrlをリロードすることです。
は解決:rtvalluriおかげ
// App control
$scope.$on('loginLogout',function(){
$scope.isLogged = UserLogged.isLogged();
$scope.userLogged = UserLogged.get();
});
// loginCtrl
$http.get(..).sucess(function(data){
UserLogged.set(data);
$scope.$emit('loginLogout');
})
コードフォームloginCtrlを使用して変数を工場に設定し、 rootCtrlは工場からの変数を使用しますか? – GPicazo
最終的にあなたの問題を解決するイベントを放出;)乾杯:) :) @Fabrizio – rtvalluri