我有一个变得越来越大的控制器..主要是由于我需要做的所有输入验证。我想做的是将所有验证功能分成一个单独的“部分控制器”。
通常,我只是创建一个服务,然后将所有功能移到其中(我可能仍会这样做)。我唯一的问题是:验证功能有时需要了解范围。例如,当我进行交叉验证时。我不确定是否要将范围传递给服务。
解决此问题的最佳方法是什么?使用服务..?
.service("validation-service", function() {
return {
populate: function($scope) { //return validator functions }
};
});
或者,是否可以将控制器分为两个文件?像这样
文件1
.partialController("myController", function($scope) { /*do normal stuff here*/ });
文件2
.partialController("myController", function($scope) { /*do validations here*/ });
最佳答案
我必须同意Jeff指令,如果将其分解为基本功能,它将变得更加有用,并且可能会重用。
例如,您可以构建密码确认指令或语义上不同的指令来检查是否相等。
看看这个相等指令,它应该可以帮助:
http://plnkr.co/edit/bTFMzV70vjOzwhimVtQL?p=info
对于您的小提琴中的示例,您可以改为:(尽管我确信您的小提琴是一个简化的示例)
<input name='start' type="number" ng-model="model.start" max="{{model.end}}"/>
<input name='end' type="number" ng-model="model.end" min="{{model.start}}"/>