属性在范围对象中定义但不可访问

时间:2013-08-15 08:37:34

标签: javascript angularjs angularjs-directive console.log

为什么我能够在我的范围内看到一个用console.log()打印的属性,但是当我尝试访问它时,它是否未定义?

以下代码位于指令的控制器函数中:

console.log($scope); //a scope object with a defined "output" property
console.log($scope.output); //undefined

以下是第一个console.log()的范围输出。

Scope {$id: "008", $$childTail: null, $$childHead: null, $$prevSibling: Scope, $$nextSibling: Scope…}
...
output: "3"
...

我知道有another question asking for pretty much the same但是OP正在使用带有@的隔离范围作为属性,而我使用的=不适用于observe据我所知。

然后还有一些我有点困惑的事情。为什么这甚至可能,不是作为参数给出的console.log()“快照”?那么我怎么可能看到第1行和第2行中的属性未定义?

1 个答案:

答案 0 :(得分:4)

这是JavaScript中的一个普遍问题。我发现this answer非常有帮助。

  

运行console.log(this)时,输出对象本身和   控制台将引用(如果你喜欢的指针)链接到内部   变量

同样适用于$ scope。