Gho*_*o5t 18 javascript angularjs
我对Angular中的Globals的一些事情感到困惑.下面是我的伪代码.
1)通过放置GlobalCtrl的方式,我可以从所有控制器中引用我的$ scope.modalOptions.在这种情况下,我很困惑为什么我看到人们将全局属性添加到$ rootScope而不是像我在这里一样添加它们.这是为了以防万一他们想把它注入服务或什么?
2)我应该使用服务而不是向GlobalCtrl添加属性和方法吗?如果是这样,为什么?
<div ng-app="app" ng-controller="GlobalCtrl">
<div ng-view></div>
</div>
Run Code Online (Sandbox Code Playgroud)
function GlobalCtrl($scope, $location) {
$scope.modalOptions = {
backdropFade: true,
dialogFade: true
};
}
Run Code Online (Sandbox Code Playgroud)
hol*_*ple 16
"主控制器"方法绝对比使用$ rootScope更可取.
范围继承是存在的,所以为什么不利用它.在我看来,该解决方案适用于大多数情况,即除非你需要在某个地方有一个并行控制器(那不是Main的孩子).在这种情况下,最好的方法是使用服务并在需要的地方注入.服务(或者更确切地说是工厂,因为你可能正在使用它 - 在这里阅读更多关于它们的信息)是单例,并且可以很好地跨控制器共享数据.
范围继承是非常常见的JavaScript继承.您应该倾向于为数据使用对象,因为它们是通过引用传递的.
如果您$scope.myString = 'is of a primitive data type';的父控制器中有一个原语,并尝试覆盖子控制器中的值,结果将不是您所期望的 - 它将在子控制器上创建一个新字符串,而不是写入父控制器.
建议在这里阅读
如果您使用嵌套控制器方法,请不要忘记仍然$scope在子控制器中注入(和其他依赖项).它可能没有,但它更慢,更难以测试,最后但并非最不重要 - 这是错误的方法.
最后,如果您有很多状态变量来跟踪和/或使用大量的使用点,那么将它们提取到服务中绝对是个好主意.
| 归档时间: |
|
| 查看次数: |
9152 次 |
| 最近记录: |