Angular單頁應用&AngularJS內部實現原理


回顧
  • 自定義指令
  • 登錄后獲取登錄信息session
    • 首先在登錄驗證的時候保存一個user
    • 在學生管理頁面中運用ajax調用獲取到登錄的用戶信息
    • 對注銷按鈕添加點擊事件:調用ajax在表現層給user賦值為null
Angular實現單頁應用

angular中實現單頁應用是運用了UI-router插件

  • 路由
    • 后台中的路由是用來配置路徑,分配請求的方法;
    • angular中的路由也是同樣的原理,通過導入ui-router插件,在main.js中配置不同的路由
  • 實現方法
    • 先導入ui-router文件

      var mainApp = angular.module("mainApp",["ui-router","regApp","loginApp","studentApp"]);
        mainApp.config(function($urlRouterProvider,$stateProvider){
        $urlRouterProvider.when("","/reg");
        $stateProvider.state("reg",{
            url:"/reg",  //路由匹配的路徑
            templateUrl:"modules/reg/reg.html",  //文件模板路徑
            controller:"RegController"
        }
      }
      
        //在html中的代碼
        <body>
            <div ui-view><div>
        <body>

       

       
Angular內部實現原理

angular的實現原理主要是利用了三個對象:$watch,$digest,$apply;

  • $watch 監聽(列表)對象(類數組)

    • 所有頁面上綁定的屬性都會放在監聽列表中,並不是所有$scope中的屬性都會放在監聽列表中,只有頁面上綁定的才會放入監聽列表。

    • 監聽列表的作用就是放置所有綁定在頁面上的屬性

      1 $scope.$watch("name",function(a,b){
      2       console.log("name is changed");
      3   });
      4   //里邊兩個參數,a是修改之后的值,b是修改之前的值

       

       
  • $digest 循環對象

    • 循環監聽列表中的數據是否發生變化,則把$watch中的所有數據拿來循環,一旦有監聽對象發生變化就調用回調函數進行DOM操作。
    • 直到沒有數據變化為止。
    • 為了防止無限循環,在設計angular的過程中設定了循環次數最多10次,如果超過10次則會報錯。
    • 這種機制就要求不要進行過多的數據聯動。
    • 這個機制有一個前提:循環列表中的對象在Angular的上下文環境中。
  • 用$apply可以讓代碼回到Angular的上下文環境

    1 setTimeout(function(){
    2           $scope.$apply(function(){
    3               $scope.name = "changed";
    4           });
    5   }, 1000);

     

     


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM