Angularjs 在数据和逻辑分离方面,最佳实践是什么

Angularjs 在数据和逻辑分离方面,最佳实践是什么,angularjs,rest,Angularjs,Rest,目前我有一堆控制器,看起来有点太大了,我不喜欢,因为它们管理逻辑和数据存储 例如,让我们看一个简化的寄存器控制器: $scope.username = ""; $scope.password = ""; $scope.validateUsername= function(){ ...... } $scope.validatePassword= function(){ ...... } $scope.updateUserConfig = function(){ //a res

目前我有一堆控制器,看起来有点太大了,我不喜欢,因为它们管理逻辑和数据存储

例如,让我们看一个简化的寄存器控制器:

$scope.username = "";
$scope.password = "";

$scope.validateUsername= function(){
  ......
}
$scope.validatePassword= function(){
  ......
}

$scope.updateUserConfig = function(){
     //a rest call here
}
对我来说,这似乎是错误的,因为控制器正在存储数据、执行逻辑并调用rest服务

我认为控制器应该是它所使用的视图的逻辑,而“模型”即用户名和密码应该在其他地方,以及对rest服务的调用

我环顾四周,看到有人雇用工厂,这些工厂被注入控制器,用于其余通话;由于这些工厂不会存储状态,它们可以在整个应用程序中共享,所以这似乎是个好主意


但是我不确定数据方面,数据存储在控制器中是正常的还是有更好的做法?

重要的是要记住,您的视图必须绑定到控制器中的数据/方法,因此必须以这样的方式公开才能实现这一点。换句话说,在控制器中具有这些属性没有什么错


也就是说,这些数据通常来自外部源,或者在多个视图/控制器中需要,因此工厂/服务通常会将对象返回给控制器,然后将该对象分配给
$scope
属性。通过这种方式,您可以将该层抽象出来,并在应用程序中共享数据,而无需重复自己的操作。

重要的是,您的视图必须绑定到控制器中的数据/方法,因此必须以这种方式公开视图,才能实现这一点。换句话说,在控制器中具有这些属性没有什么错


也就是说,这些数据通常来自外部源,或者在多个视图/控制器中需要,因此工厂/服务通常会将对象返回给控制器,然后将该对象分配给
$scope
属性。通过这种方式,您可以将该层抽象出来,并在应用程序中共享数据,而无需重复自己的操作。

这正是我所想的,因此可以使用类似$scope.model=MyService.getModel()的内容将用户名和密码提取到服务对象中大量伪代码如果我正确理解不同的工厂是单例,服务是实例,那么对于模型,我需要服务,其余的请求工厂。是的,不知道应用程序的确切工作原理,这很可能是我会做的。这篇文章将比我希望的更好地解释这些差异-当然,记住不要做得太多,因为抽象并不总是必要/实用的,但对于几乎任何一个非琐碎的应用程序来说,它们将是至关重要的。这正是我所想的,因此,可以将用户名和密码提取到具有$scope.model=MyService.getModel()之类内容的服务对象中大量伪代码如果我正确理解不同的工厂是单例,服务是实例,那么对于模型,我需要服务,其余的请求工厂。是的,不知道应用程序的确切工作原理,这很可能是我会做的。这篇文章将比我希望的更好地解释这些差异-当然,记住不要做得太多,因为抽象并不总是必要/实用的,但对于几乎任何非琐碎的应用程序来说,它们在某些地方都是至关重要的