2015-10-06 81 views
-1

我已经遇到了一些麻烦,从父作用域访问值,什么奇怪的行为似乎是一些奇怪的行为也。

如果我将$scope.$parent记录到控制台并检查DOM对象,则有一个属性topicDiscovery.name。但是,当我尝试记录此($scope.$parent.topicDiscovery.name)时,它将返回undefined

此外,当我尝试登录topicDiscovery对象时,它将返回一个空数组,即使它在DOM中不为空时为$scope.$parent

这是为什么?

+0

什么是属性名称? 'topicDiscovery'或'$ topicDiscovery'? –

+0

你可以添加jsfiddle演示 –

+1

一些通常与范围混淆。使用适当的作用域继承并避免$ parent。或者尝试创建演示,否则不容易猜测和提供帮助。 – dfsq

回答

-1

这意味着$scope.$parent.topicDiscoveryconsole.log后得到改变。执行console.log时,Google chrome不会打印所有json对象。它只是指当前对象。尝试使用JSON.stringify($scope.$parent),在这里,你会不会为字符串化是JS对象转换为字符串,也不会有一部开拓创新的对象和字符串之间连接的任何记忆得到这个属性。

这里是最好的例子。

var d={z:{b:{}}}; 
 

 
console.log(d); //When you check here, d.a_1 is available 
 
console.log("d.a_1",d.a); //Here d.a_1 is not available. 
 

 
//Here I am adding d.a_1 property 
 
for(var i=0;i<10;i++){ 
 
    d['a_'+i]=i; 
 
}

+0

你能证明为什么downvoted? –

+0

Angular的'$ scope'行为与普通的JS对象不同。 – Cerbrus

+0

@Cerbrus,浏览器控制台内存操作不知道它是角度还是灰色的。如果您在视图中渲染该值,则只有您可以获得该变量的实时更新。 –