何时使用嵌套控制器而不是在angularjs中使用服务?

前端之家收集整理的这篇文章主要介绍了何时使用嵌套控制器而不是在angularjs中使用服务?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我刚刚开始使用AngularJS,所以我不是专家.

我有一个div代表我的html视图的正确区域.在那个div我有一个控制器,即

<div class="rightContainer" ng-controller="rightContainerCtrl">...</div>

在那个div里面我有一个表,一个搜索区域等.那个div里的每个区域都有自己的控制器,它看起来像这样:

<div class="rightContainer" ng-controller="rightContainerCtrl">
...
   <div class="search" ng-controller="searchCtrl">...</div>
...
   <div class="table" ng-controller="tableCtrl">...</div>

 </div>

例如,搜索区域有自己的控制器,它是rightContainerCtrl的一个小孩,因为它需要改变父(rightContainerCtrl)中的一些内容,但是rightContainer div正在增长,现在它很大,并且包含几个嵌套的控制器.

我认为使用这个嵌套控制器在这种情况下是不好的,因为所有的嵌套控制器共享父范围,并不是所有的控制器都需要访问所有的父范围变量,所有的控制器都是rightContainerCtrl的“囚犯”,所以他们是与他们的母公司高度配合.

它看起来像一个God object反模式(在这种情况下是上帝控制器),所以我认为,而不是使用嵌套的控制器,我可以重构我的代码,以消除rightContainerCtrl控制器,并使用一个服务(像facade design pattern),那个服务将由控制器使用,而不是共享作用域变量.

但由于我不是AngularJs专家,我不知道我是对的,或者如果最好离开这位父母的控制人,也许我错过了一些事情,所以我的问题是

什么时候更好地使用嵌套的控制器(嵌套范围),而最好是在angularjs中使用服务?

控制器/范围层次结构不应该规定数据/模型在应用程序中的共享方式.当您想到Angular中的数据共享时,请考虑依赖注入.

在@ shaunhusain的回答中引用的视频中,Misko声明范围应该引用模型,而不是模型 – 所以不要将数据建模/放置到范围内.您的型号/数据通常应在服务中.

在写一个Angular应用程序时,首先考虑一下你的模型.将它们放在services with APIs中以获取/编辑/操纵模型.然后设计你的意见.每个视图都应该投射/使用/操纵你的模型的一些子集.为每个视图定义一个控制器,只需将所需的模型子集粘贴到视图中即可.使您的控制器尽可能薄.

(也不推荐命名一个控制器rightContainerCtrl.控制器不应该知道演示/布局.)

猜你在找的Angularjs相关文章