Javascript angular js:将大型控制器拆分为多个文件

Javascript angular js:将大型控制器拆分为多个文件,javascript,angularjs,angularjs-service,angularjs-controller,Javascript,Angularjs,Angularjs Service,Angularjs Controller,我有一个越来越大的控制器。。主要是由于我需要做的所有输入验证。我想做的是将所有验证函数拆分为一个单独的“部分控制器” 通常,我只需要创建一个服务并将所有功能移动到其中(我仍然可以这样做)。我唯一的问题是:验证函数有时需要知道范围。例如,当我进行交叉验证时。我不确定是否要将作用域传递给服务 解决这个问题的最佳方法是什么?使用服务? .service("validation-service", function() { return { populate: function(

我有一个越来越大的控制器。。主要是由于我需要做的所有输入验证。我想做的是将所有验证函数拆分为一个单独的“部分控制器”

通常,我只需要创建一个服务并将所有功能移动到其中(我仍然可以这样做)。我唯一的问题是:验证函数有时需要知道范围。例如,当我进行交叉验证时。我不确定是否要将作用域传递给服务

解决这个问题的最佳方法是什么?使用服务?

.service("validation-service", function() {
    return {
        populate: function($scope) { //return validator functions }
    };
}); 
或者,有没有办法将控制器分成两个文件?类似这样的东西。

文件1

文件2
我不得不同意Jeff的观点,如果你把它分解为基本功能,它将非常有用,并且可能是可重用的

例如,您可以构建一个密码确认指令或一个语义不同的指令来检查是否相等

查看此平等指令,它将有助于:


例如,在你的小提琴中,你可以这样做:(虽然我相信你的小提琴是一个简化的例子)



您应该尝试减少对
$scope
的依赖性,因为所有内容都会暴露出来,所以您无法保持服务验证的通用性。也许传递使用范围属性创建的对象更好,因为它会使依赖关系显式,如
populate:function(param1,param2,param3)
同意,这就是为什么我不想在服务中执行此操作-我宁愿将控制器拆分为两个文件。。验证不是真正可重用的-它们非常特定于1应用程序。为什么不创建一个表单管理指令或控制器来处理验证?我的解决方案的一部分是一个指令。。还有服务。该指令设置“验证集”,即
validation set=“firstname”
。该集合只是在控制器中填充的函数列表,并通过
addSet()
添加到服务中。它们位于控制器中,因为它们(验证函数)依赖于范围(有时)。例如,开始日期必须小于结束日期-所以如果开始日期更改,我需要在结束日期触发验证。我是通过一个
手表
来做这件事的。这里是我到目前为止掌握的一些东西:有点冗长,也不完整,但可能有助于阐明我正在尝试做的事情。是的,这是一个简化的例子。。我最初写了一堆指令,但这变成了一场属性噩梦。是的,然后服务会这样做,这会更易于维护和理解。
.partialController("myController", function($scope) { /*do normal stuff here*/ });
.partialController("myController", function($scope) { /*do validations here*/ });
<input name='start' type="number" ng-model="model.start" max="{{model.end}}"/>
<input name='end' type="number" ng-model="model.end" min="{{model.start}}"/>