3

为什么我可以在我的范围内看到一个打印有 的属性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"
...

我知道还有另一个问题要求几乎相同,但是 OP 正在使用带有@属性的隔离范围,而我正在使用=它不会observe像我所知的那样工作。

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

4

1 回答 1

4

这是 JavaScript 中的一个普遍问题。我发现这个答案很有帮助。

当您运行console.log(this) 时,您输出对象本身,并且控制台将引用(如果您愿意,可以使用指针)链接到内部变量。

同样适用于 $scope。

于 2013-08-15T09:31:59.023 回答