0
問題: 我有一個簡單的註冊表單。新用戶進行身份驗證後,我的應用程序會將其轉到新鏈接,但不會顯示包含內容的新頁面,也不會切換 - 如果在視圖中。所以視圖不刷新(但一切都很好,當我按下F5鍵),我試圖刷新它,但實際上卻並不明白我需要運行Angular:如何從另一個範圍刷新視圖?
登記表:
- 服務
Authentication
。方法,該數據設置爲localStorage
並轉移到一個新的鏈接:
Authentication.registration = function(data) {
localStorage.setItem('registrationData', JSON.stringify(data));
$location.path('/userPage');
}
Authentication.ifLog = function() {
// verify if the user exists in localStorage
}
- 彈出登錄形式和它的
directive
(與它自己的範圍)方法在Link
功能: - 這就是切換菜單並轉移到用戶頁面。當用戶登錄時,我們向他展示第一個和第三個菜單,並將他轉移到新頁面。 '
Base
' - 這是一個控制器,在那裏我稱之爲ifLog
方法從Authentication
服務
$scope.registration = function(form) {
Authentication.registration(
};
<li ng-if="Base.logined"><a href="#userPage">UserPage</a></li>
<li ng-if="!Base.logined" ng-click="Base.toggleModal()">LogIn</li>
<li ng-if="Base.logined">{{Base.user.name}}</li>
我應該怎麼做更新視圖?
感謝您的回覆。是的,我嘗試過使用apply,但在我看來,我是在錯誤的地方使用了它。我試着在我的指令範圍中使用scope.apply。據我所知,我需要在我的基本控制器中使用,但是我沒有在註冊後從該範圍運行任何方法。我應該如何使用它? – DarthJS
如果您登錄的變量在錯誤的地方,您可以使用$ rootScope,但它不是乾淨的方式。 –
我不想使用rootScope,我正在學習Angular並希望以最佳方式學習它:)。不,在主控制器中'登錄'var,但是我的指令在隔離範圍內運行的服務方法,所以基本控制器不刷新。如果我做$ scope.apply()我不適用於我的指令範圍,我應該在我的指令或主基本控制器中執行$ scope.apply(並且有些東西在這裏)? – DarthJS