为什么我有一个未定义的作用域?angularjs
Why do I have a not defined scope ? angularjs
我试图从范围中"提取"一个值。然而,我得到一个错误,没有定义,通过我不明白为什么。这是来自Chrome dev
console.log($scope.auth)
console.log($scope)
第一个打印"undefined",第二个打印如下。我期望$scope。命令输出对象
auth: Object
Owner: "agent2"
Role: "coldCalling"
这有什么原因吗?
$$childScopeClass {$$childTail: null, $$childHead: null, $$nextSibling: null, $$watchers: null, $$listeners: Object…}
$$childHead: null
$$childScopeClass: null
$$childTail: null
$$listenerCount: Object
$$listeners: Object
$$nextSibling: null
$$prevSibling: null
$$watchers: null
$id: "002"
$parent: Scope
auth: Object
Owner: "agent2"
Role: "coldCalling"
__proto__: Object
this: $$childScopeClass
__proto__: Scope
您没有显示完整的代码,但它可能发生,因为当您运行console.log时auth对象不存在(您可能从异步服务调用等中获取它)。它仍然会出现在console.log($scope)
调用中,因为控制台在展开变量时显示变量的当前状态。因此,当您在控制台中展开$scope
变量时,它的auth
对象已经定义并设置好了。
下面是一个超时的例子(模拟任何异步事件):
setTimeout(function(){
$scope.auth = {'Owner': 'Test', 'Role': 'Role'};
}, 1000);
console.log($scope.auth); // undefined
console.log($scope); // auth object exists when you expand it in the console
在这里查看完整的示例(检查控制台):http://plnkr.co/edit/uqJVzfYNoJ0KCRGZawdW?p=preview
此外,您将在这里找到一些与此相关的很好的解释:我如何更改console.log的默认行为?(* safari中的错误控制台,没有附加组件*)
因此,底线是:您将无法"提取"该作用域值,仅仅因为它在那时不可用。展示更多的代码,我们将帮助您确定何时可用。
相关文章:
- AngularJS指令隔离作用域
- Angularjs:修改js中的作用域,稍后在页面中使用
- AngularJS$作用域在选项卡集中出现问题
- AngularJs,在没有隔离的情况下将指令属性添加到作用域
- 如何在angularjs中将多个作用域变量传递到自定义指令中
- AngularJS:如何与其他控制器共享作用域函数和变量
- 为什么AngularJS$作用域不能正常工作
- AngularJS:如何调用指令中定义的函数'控制器的作用域
- AngularJS:ngRepeat作用域在具有隔离作用域和ngTransclude的自定义指令中失败
- 阻止“ng include”创建孤立的作用域.AngularJS
- 在另一个作用域变量中使用AngularJS作用域变量
- AngularJS观察指令属性表达式,动态继承作用域
- 在AngularJS中将元素添加到作用域时,如何在所有设备上播放声音
- AngularJS$作用域在函数之外不可访问
- 隔离作用域+绑定名称和仅在AngularJS中的隔离作用域之间的差异
- AngularJS-由$scope创建的作用域何时执行$new()已删除.垃圾收集器或Angular负责处理它吗
- $watch检查在作用域 AngularJS 中定义的变量
- 如何将Item添加到作用域AngularJS
- 为什么我有一个未定义的作用域?angularjs
- 如何在每次调用指令时创建一个唯一的作用域(AngularJS)