2014-10-22 34 views
0

在我的角度應用中,當用戶訪問「home」狀態(我正在使用ui-router)時,他得到一個歡迎消息。登錄後刷新狀態,以顯示取決於用戶角色的內容Angular JS&ui-router

按下登錄按鈕時,會出現覆蓋圖,用戶可以進行身份​​驗證。

成功驗證後,我想要做一些API調用並在模板上顯示內容。

所有這一切都在代碼中,如下所示:

.config(['$stateProvider', function($stateProvider) { 
    $stateProvider.state('home', { 
     url: "/", 
     templateUrl: "app/sections/home/homeTpl.html", 
     controller: 'HomeCtrl' 
    }); 
}]) 

.controller('HomeCtrl', ['$scope', 'Session', 'MoviesService', function ($scope, Session, MoviesService) { 
    if (Session.getUserRole() === 'USER') { 
     // Add a movie. 
     $scope.newMovie = { 
      name: 'I am the new movie' 
     }; 
     MoviesService.save($scope.newMovie); 
    } 
}]) 

當用戶進行身份驗證,控制器檢查的用戶角色,如果他是一個「用戶」做的東西....

現在,爲了讓一切工作,我需要的角度UI路由器刷新狀態,在登錄後:

$state.transitionTo($state.current, {}, { 
    reload: true, 
    inherit: false, 
    notify: true 
}); 

雖然它的作品,我不知道這是去有關最佳實踐的方式.. 。

任何想法?

回答

0

我不知道你是否真的需要通知,但你可以使用$state.reload那個用於transitionTo的別名。 $state doc

我認爲你是對的,我也爲我的應用程序做同樣的事情。

+0

我看到Mathieu,所以你相信邏輯是好的? – 2014-10-22 12:30:46

+0

是的,因爲你需要刷新你的控制器,因爲在你的上下文中你現在被記錄 – 2014-10-22 12:31:22

+0

另一種方法是在視圖中的每個組件設置手錶 - 但它看起來資源昂貴 - 我可以觀看用戶角色的變化 – 2014-10-22 12:31:54

相關問題