亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

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


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


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


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){
    //創(chuàng)建一個(gè)新的作用域,并添加兩個(gè)屬性
    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)
 
    //獲取這幾個(gè)作用域
    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);
        }
    }
});

執(zhí)行后的結(jié)果是,界面顯示了紅色的“你好嗎?”,當(dāng)然這不是我們所關(guān)注的。下面我們來看一下打印的日志:

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


由此我們可以得出以下結(jié)論:

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

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

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

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


分享到:
標(biāo)簽:Angular scope的區(qū)別
用戶無頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定