我发现我几乎总是希望在路由更改中保留范围,因此,我发现我几乎停止使用控制器,除了将所有内容转发到服务之外.我的控制器最终看起来像这样:
app.factory('CtrlAService', function() {
    return {
        scope: {},
    };
});
function CtrlA($scope, CtrlAService) {
    $scope.data = CtrlAService.scope;
}
也就是说,我的控制器所做的就是将变量绑定到服务变量,而不是绑定一个或两个函数 - 我不使用控制器来做任何事情.
这种方法是否正确,如果没有,有什么更好的方法来实现这一目标?
我在这里做了一个示例应用程序:http://jsfiddle.net/Wc22k/1/
我认为如果您有一个数据量很大的应用程序,这通常是正确的。您需要的视图功能越多,您在控制器中得到的功能就越多。例如,我在应用程序中广泛使用 google-maps 和 ng-grid,因此我的所有控制器都包含控制器内部的所有配置(有时是标签显示等功能)。另外,我发现并正在修改的谷歌地图代码(MIT 许可)有一个非常复杂的 JavaScript 对象,它包装了谷歌地图代码和指令的控制器。
如此简短的版本,是的,在数据密集型应用程序中,大部分代码最终都在服务中,而控制器只是将视图连接到服务中的某些数据,在其他情况下则不会。我明白你所说的关于持久范围的内容,但我认为最好将视图所需的所有逻辑留在控制器中(我将其视为视图模型,而不是服务中的数据模型)。它只是清楚地区分正在发生的事情以及影响什么的事情。例如,如果我需要在某些视图之间保留一段数据,我会将其存储在服务中(一直在考虑使用“值”,因为它在语义和功能上更合适,但只是没有花时间重新执行此操作)因素)。
| 归档时间: | 
 | 
| 查看次数: | 1291 次 | 
| 最近记录: |