最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解angular中的作用域及繼承

 更新時間:2017年05月31日 17:13:15   作者:北城以南  
本篇文章主要介紹了詳解angular中的作用域及繼承,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

在一些使用angular框架的大型項目中,似乎有很多個controller,而每個controller都有自己的$scope.

1、$rootscope

$rootScope頂級作用域,也叫根作用域,類似于window,window的屬性在任何子作用域都可以訪問。$rootScope則是所有controller進行數(shù)據(jù)溝通的中間域,即在$rootScope中的數(shù)據(jù),在每個controller中都能通過$rootScope.xxx獲取到。

2、$scope

(1)作用

$scope 就在視圖和控制器之間建立了一個橋梁,基于作用域視圖在修改數(shù)據(jù)時會立刻更新 $scope,同樣的 $scope 發(fā)生改變時也會立刻重新渲染視圖.每個控制器controller對應一個$scope,通過為其屬性賦值,可以傳遞數(shù)據(jù)給模板渲染.

(2)生命周期

創(chuàng)建:在創(chuàng)建控制器或指令時,AngularJS會用$injector創(chuàng)建一個新的作用域,并在這個新建的控制器或指令運行時將作用域傳遞進去。

鏈接:當Angular開始運行時,所有的$scope對象都會附加或者鏈接到視圖中。所有創(chuàng)建$scope對象的函數(shù)也會將自身附加到視圖中。這些作用域?qū)援擜ngular應用上下文中發(fā)生變化時需要運行的函數(shù)。這些函數(shù)被稱為$watch函數(shù),Angular通過這些函數(shù)獲知何時啟動事件循環(huán)。

更新:當事件循環(huán)運行時,它通常執(zhí)行在頂層$scope對象上(被稱作$rootScope),每個子作用域都執(zhí)行自己的臟值檢測。每個監(jiān)控函數(shù)都會檢查變化。如果檢測到任意變化,$scope對象就會觸發(fā)指定的回調(diào)函數(shù)。
銷毀:當一個$scope在視圖中不再需要時,這個作用域?qū)謇砗弯N毀自己。盡管永遠不會需要清理作用域(因為Angular會為你處理),但是知道是誰創(chuàng)建了這個作用域還是有用的,因為你可以使用這個$scope上叫做$destory()的方法來清理這個作用域。

3、原型繼承

scope是AngularJS中的作用域(其實就是存儲數(shù)據(jù)的地方),很類似JavaScript的原型鏈 。搜索的時候,優(yōu)先找自己的scope,如果沒有找到就沿著作用域鏈向上搜索,直至到達根作用域rootScope。

<!DOCTYPE html>
          <html>
          <head>
           <title></title>
          </head>
          <body ng-app="myApp">
          <div ng-controller="parentController">
            {{name}}
            <div ng-controller="sonController">
              {{name}}
            </div>
          </body>
          <script type="text/javascript" src="./angular.min.js"></script>
          <script>
            var parentController=function($scope){
              $scope.name="parent";
            }
            var sonController=function($scope){
              console.log($scope.name);//parent
            }
            parentController.$injector=["$scope"];
            sonController.$injector=["$scope"];
            angular.module("myApp",[])
            .controller("parentController",parentController)
            .controller("sonController",sonController)
          </script>
          </html>

首先子控制器在自己的作用域內(nèi)查找name屬性,沒找到,向父控制器找。

補充一點,如何在子控制器中修改父控制器中$scope的值,可見如下:

$scope.$parent.name="son";在子控制器中$scope.$parent就表示父控制器中的$scope,然后修改其值即可。

4、$new

$scope.$new(isolated,parent);用于定義scope的child scope

1)參數(shù):isolated,是否是隔離的。如果值是true,那么這個scope不會從父scope繼承原型。作用域是獨立的,在這里不能看見父scope的屬性。如果值為false,則繼承自父(可以訪問父scope的所有成員),默認為false!

parent  用于指定創(chuàng)建的子scope的父scope,如果沒有此參數(shù),則父scope為調(diào)用當前$new方法的$scope

  var myController=function($scope){
    $scope.data="hello!"
    var scope1=$scope.$new(false,$scope);
    console.log(scope1.data); //hello! scope1繼承了$scope,所以可以訪問到data
    var scope2=$scope.$new(true,$scope); 
    console.log(scope2.data);// undefined 第一個參數(shù)為true,表示是隔離的,無法繼承,自己又沒有,故為undefined
  }
  myController.$injector=["$scope"];
  angular.module("myApp",[])
  .controller("myController",myController)

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Angular2安裝angular-cli

    Angular2安裝angular-cli

    這篇文章主要介紹了Angular2安裝angular-cli ,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • 詳解angularjs獲取元素以及angular.element()用法

    詳解angularjs獲取元素以及angular.element()用法

    本篇文章主要介紹了詳解angularjs獲取元素以及angular.element()用法 ,具有一定的參考價值,有興趣的可以了解一下
    2017-07-07
  • Angular2平滑升級到Angular4的步驟詳解

    Angular2平滑升級到Angular4的步驟詳解

    最近Angular項目組終于發(fā)布了新版——正式版 Angular 4.0.0。所以想著就來嘗試下升級,記錄下整個升級過程分享給大家,所以這篇文章主要介紹了Angular2升級到Angular4的詳細步驟,需要的朋友可以參考下。
    2017-03-03
  • AngularJS實現(xiàn)表單手動驗證和表單自動驗證

    AngularJS實現(xiàn)表單手動驗證和表單自動驗證

    本文是對AngularJS表單驗證,手動驗證或自動驗證的講解,對學習JavaScript編程技術有所幫助,感興趣的小伙伴們可以參考一下
    2015-12-12
  • 如何在AngularJs中調(diào)用第三方插件庫

    如何在AngularJs中調(diào)用第三方插件庫

    在AngularJs中我們會不可避免的使用第三方庫,這篇文章主要介紹了如何在AngularJs中調(diào)用第三方插件庫,有興趣的可以了解下
    2017-05-05
  • AngualrJS中的Directive制作一個菜單

    AngualrJS中的Directive制作一個菜單

    本文給大家介紹AngualrJS中的Directive制作一個菜單,涉及到angularjs directive相關知識,本文介紹的非常詳細,具有參考借鑒價值,特此分享供大家學習
    2016-01-01
  • AngularJS的$location使用方法詳解

    AngularJS的$location使用方法詳解

    這篇文章主要介紹了AngularJS的$location使用方法詳解的相關資料,希望通過本文大家能夠掌握這部分內(nèi)容,需要的朋友可以參考下
    2017-10-10
  • AngularJs  unit-testing(單元測試)詳解

    AngularJs unit-testing(單元測試)詳解

    本文主要介紹AngularJs unit-testing(單元測試)的內(nèi)容,這里整理了單元測試的知識,及示例代碼,有興趣的朋友可以參考下
    2016-09-09
  • Angular 1.x個人使用的經(jīng)驗小結(jié)

    Angular 1.x個人使用的經(jīng)驗小結(jié)

    這篇文章主要給大家介紹了關于Angular 1.x個人使用的一些經(jīng)驗,屬于一些基礎入門教程,文中通過示例代碼介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面來一起看看吧。
    2017-07-07
  • 詳解如何為你的angular app構(gòu)建一個第三方庫

    詳解如何為你的angular app構(gòu)建一個第三方庫

    這篇文章主要介紹了詳解如何為你的angular app構(gòu)建一個第三方庫,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12

最新評論

汾阳市| 临清市| 封丘县| 海门市| 阿拉善右旗| 西充县| 曲沃县| 木兰县| 鄯善县| 和静县| 贡嘎县| 奇台县| 荣昌县| 隆安县| 会昌县| 江永县| 星座| 平果县| 德安县| 梅河口市| 临武县| 文昌市| 南靖县| 上虞市| 礼泉县| 鄱阳县| 保德县| 密山市| 武汉市| 大竹县| 阜阳市| 张家界市| 泉州市| 中西区| 栾城县| 卢氏县| 岐山县| 清水河县| 兴安县| 邻水| 江北区|