我决定是时候该探索测试指令的隐藏方面了,现在当我对具有隔离范围的指令执行某些操作时:
parentScope = $rootScope.$new()
parentScope.dasDingy = "bla bla dingy"
element = angular.element("<foo dingy='dasDingy'></foo>")
$compile(element)(parentScope)
$rootScope.$digest()
scope = angular.element(element).scope()
console.log(scope.dingy) // is undefined --- Nah, ain't exist
// but, if I do
console.log(scope.$$childHead.dingy) // it exists and it's == 'bla bla dingy'
那么,
scope.$$childHead
是什么呢?为什么不能直接在范围内访问它?还是我在这里做一些愚蠢的事情?
最佳答案
在这种情况下,scope.$$childHead
是<foo>
指令的隔离范围。请参阅here in the source code,在何处以及何时分配this.$$childHead
。有关使用范围类型不同(共享,隔离,新)的指令的示例,请参见this plnkr中的控制台输出。