2016-01-04 20 views
0

問題: 我有一個簡單的註冊表單。新用戶進行身份驗證後,我的應用程序會將其轉到新鏈接,但不會顯示包含內容的新頁面,也不會切換 - 如果在視圖中。所以視圖不刷新(但一切都很好,當我按下F5鍵),我試圖刷新它,但實際上卻並不明白我需要運行Angular:如何從另一個範圍刷新視圖?

登記表:

  1. 服務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功能:
  • $scope.registration = function(form) { 
     
        Authentication.registration(
     
        };

    1. 這就是切換菜單並轉移到用戶頁面。當用戶登錄時,我們向他展示第一個和第三個菜單,並將他轉移到新頁面。 'Base' - 這是一個控制器,在那裏我稱之爲ifLog方法從Authentication服務

    <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>

    我應該怎麼做更新視圖?

    回答

    0

    您的變量在控制器中更新,但無法查看。您可以使用scope apply來更新視圖中的變量。

    +0

    感謝您的回覆。是的,我嘗試過使用apply,但在我看來,我是在錯誤的地方使用了它。我試着在我的指令範圍中使用scope.apply。據我所知,我需要在我的基本控制器中使用,但是我沒有在註冊後從該範圍運行任何方法。我應該如何使用它? – DarthJS

    +0

    如果您登錄的變量在錯誤的地方,您可以使用$ rootScope,但它不是乾淨的方式。 –

    +0

    我不想使用rootScope,我正在學習Angular並希望以最佳方式學習它:)。不,在主控制器中'登錄'var,但是我的指令在隔離範圍內運行的服務方法,所以基本控制器不刷新。如果我做$ scope.apply()我不適用於我的指令範圍,我應該在我的指令或主基本控制器中執行$ scope.apply(並且有些東西在這裏)? – DarthJS

    相關問題