与angularJS $范围。$父
我已经遇到了一些麻烦,从父作用域访问值,什么奇怪的行为似乎是一些奇怪的行为也。
如果我将$scope.$parent
记录到控制台并检查DOM对象,则有一个属性topicDiscovery.name
。但是,当我尝试记录此($scope.$parent.topicDiscovery.name
)时,它将返回undefined
。
此外,当我尝试登录topicDiscovery
对象时,它将返回一个空数组,即使它在DOM中不为空时为$scope.$parent
。
这是为什么?
这意味着$scope.$parent.topicDiscovery
是console.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;
}
你能证明为什么downvoted? –
Angular的'$ scope'行为与普通的JS对象不同。 – Cerbrus
@Cerbrus,浏览器控制台内存操作不知道它是角度还是灰色的。如果您在视图中渲染该值,则只有您可以获得该变量的实时更新。 –
什么是属性名称? 'topicDiscovery'或'$ topicDiscovery'? –
你可以添加jsfiddle演示 –
一些通常与范围混淆。使用适当的作用域继承并避免$ parent。或者尝试创建演示,否则不容易猜测和提供帮助。 – dfsq