我决定是时候该探索测试指令的隐藏方面了,现在当我对具有隔离范围的指令执行某些操作时:

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中的控制台输出。

07-26 01:02