AngularJS哲学 - 控制器作为服务的"窗口"

cem*_*ate 7 javascript design-patterns angularjs angularjs-service angularjs-scope

对不起,标题含糊不清;

我一直在重构我的一些AngularJS代码,试图更加"Angular",并且我注意到这种模式突然出现了:

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

app.controller("ControllerForThisSection", function($scope, someService) {
    $scope.someService = someService
}
Run Code Online (Sandbox Code Playgroud)

基本上,控制器主要是为范围提供服务的引用,因此视图可以使用它,例如

<div ng-if="someService.status">
    ....
</div>
Run Code Online (Sandbox Code Playgroud)

因此,我有多个控制器除了依赖某些共享数据或服务之外什么都不做,并且用于引用通过作用域可用的那些服务.

使用这种设计有什么不利之处吗?我能改进思考吗?这是"有角度"的方式吗?

谢谢你的建议!

Mar*_*cok 4

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

我喜欢主要从模型(通常存储在服务中)和视图的角度来思考我的 Angular 应用程序。控制器只是粘合剂,允许我们投影/提取特定 UI 视图所需的模型部分。

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