7

对不起,模糊的标题;AngularJS哲学 - 控制器作为服务的“窗口”

我已经重组了一些我的AngularJS代码,试图将更多的“角”关于这一点,我已经注意到这种模式弹出颇有几分:

app.service("someService", function(...) { 
    ... 
} 

app.controller("ControllerForThisSection", function($scope, someService) { 
    $scope.someService = someService 
} 

基本上,控制器大多那里给的范围到服务的引用,以便视图可以使用它,就像

<div ng-if="someService.status"> 
    .... 
</div> 

所以我有比什么都不做更不是依赖于某些共享数据或服务,并有助于使几个控制器的更多通过范围引用可用的服务。

使用此设计有什么不利吗?我能改善我的想法吗?这是做“角”的方式吗?

感谢您的任何建议!

+0

我处于一个非常相似的情况,虽然我使用指令而不是控制器。我总是对这种模式感到相当自信,但这确实是一个非常有趣的问题 –

+0

想想一个包裹所有控制器来服务这个服务器的主控制器? –

回答

4

这是“角度的方式”。共享数据应放入服务中,然后在需要时注入。

我喜欢以模型(通常存储在服务中)和视图为主角来思考我的Angular应用程序。这些控制器只是让我们能够投影/提取特定UI视图所需的模型部分的粘合剂。

另外,请将服务视为返回模型API,而不是模型对象(至quote Josh)。