【发布时间】:2014-07-11 16:34:39
【问题描述】:
在有人将此标记为重复之前,我在 SO:上发现了类似的问题:
但特别是我的问题本身就是一个不同的问题。
我有一个独立范围的指令。在它的后链接函数中,我试图访问一个恰好位于根(最顶层)范围内的变量。在我的隔离范围内,我尝试过myVar: '@' 和myVar: '=',但它们都不起作用,myVar 在指令范围内是undefined。以下是我的指令的返回语句:
{
restrict: 'E',
replace: true,
transclude: true,
template: tmpl,
scope: {
myVar: '@'
},
link: {
post: function ($scope) {
// $scope.myVar is undefined
// $scope.$root.myVar is defined
}
}
}
在我的控制台中,我记录了当前作用域对象,我可以将$parent 一直跟踪到根目录并看到 var 在那里,因此也可以通过当前作用域的 $root 访问 var .
我的问题是为什么'@' 和'=' 在这种情况下不起作用?是因为 var 在链中的定义高于直接父级,还是因为中间的某些父级作用域本身就是一个孤立的作用域并破坏了对该 var 的引用链?
【问题讨论】:
-
你是如何在 html 模板中分配 myVar 的? (顺便说一句,@ 将变量分配给 DOM 属性的值,这永远不会评估为某个 $scope 值)。
标签: javascript angularjs angularjs-directive angularjs-scope