我决定是时候探索测试指令的隐藏方面,现在当我对具有隔离范围的指令执行某些操作时:
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
以及为什么不能直接在范围内访问它?
或者我在这里做些蠢事?
答案 0 :(得分:7)
在这种情况下,scope.$$childHead
是<foo>
指令的孤立范围。请参阅here in the source code分配this.$$childHead
的位置和时间。有关使用具有不同类型范围(共享,隔离,新)的指令的示例,请参阅this plnkr中的控制台输出。