日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

本篇文章給大家介紹一下Angular中elem.scope()、elem.isolateScope和$compile(elem)(scope)中scope的區別。有一定的參考價值,有需要的朋友可以參考一下,希望對大家有所幫助。


淺談Angular中elem.scope()、elem.isolateScope和$compile(elem)(scope)中scope的區別


在angular的使用過程中我們經常用$rootScope.$new()為elem創建一個新的作用域scope,然后使用$compile(elem)(scope)編譯這個含有指令的元素。那么這里傳進去的scope到底是哪里的作用域?scope.$$childHead是什么作用域?編譯好的elem.scope()返回的又是什么作用域?elem.isolateScope()返回的是什么作用域?知道這些是很有必要的,特別是使用jasmine測試angular指令的時候。下面使用一個例子來驗證一下。


index.html

<!DOCTYPE html>
<html ng-app="myapp">
<head>
    <meta charset="utf-8">
    <title>angular test</title>
</head>
<body ng-controller="myCtrl">
     
</body>
<script src="./node_modules/angular/angular.js"></script>
<script src="./index.js"></script>
</html>


index.js

var app = angular.module('myapp',[]);
app.controller('myCtrl', function($compile, $rootScope){
    //創建一個新的作用域,并添加兩個屬性
    var scope_0 = $rootScope.$new();
    scope_0.color = "red";
    scope_0.name = "Jhon";
 
    //編譯該指令并插入body中
    var elem = angular.element('<p mcolor="{{color}}">你好嗎?</p>');
    $compile(elem)(scope_0);
    var body = document.querySelector('body');
    angular.element(body).append(elem)
 
    //獲取這幾個作用域
    var scope_1 = elem.scope();
    var scope_2 = elem.isolateScope();
    var scope_3 = scope_0.$$childHead;
    //并打印
    console.log("scope_0:", scope_0);
    console.log("scope_1:", scope_1);
    console.log("scope_2:", scope_2);
    console.log("scope_3:", scope_3);
});
app.directive('mcolor',function(){
    return {
        restrict: 'A',
        scope:{
            mcolor: '@'
        },
        link: function(scope, elem, attrs){
            elem.css('color', scope.mcolor);
        }
    }
});

執行后的結果是,界面顯示了紅色的“你好嗎?”,當然這不是我們所關注的。下面我們來看一下打印的日志:

scope_0: 
  color:"red"
  name:"Jhon"
 
scope_1:
  color:"red"
  name:"Jhon"
 
scope_2:
  mcolor:"red"
 
scope_3: 
  mcolor:"red"


由此我們可以得出以下結論:

$compile(elem)(scope),這里的scope是指令的外圍作用域。

elem.scope()返回的scope是指令的外圍作用域。

elem.isolateScope()返回的才是指令的獨立作用域。

scope.$$childHead返回的也是指令的獨立作用域。


分享到:
標簽:Angular scope的區別
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定