2014-10-29 76 views
1

我有所有的数据有关的请求已被委托给服务/工厂的印象。但是,他们摆正内部控制器,例如:

var app = angular.module("MyApp", []); 

app.controller("PostsCtrl", function($scope, $http) { 
    $http.get('data/posts.json'). 
    success(function(data, status, headers, config) { 
     $scope.posts = data; 
    }). 
    error(function(data, status, headers, config) { 
     // log error 
    }); 
}); 

是属于正常的惯例/图案或者它仅仅是一个例子的缘故阅读的$ HTTP实现met例子不是一次?

+1

作为一个良好的设计模式,它是更好地使用$ ** **的http服务/工厂。使用** $国土资源**,而不是* $ HTTP * – 2014-10-29 06:22:11

+1

这里只是示例演示如何使用$ HTTP。但是对于编码,大多数人使用每一个逻辑事务,退休等服务。控制器只应该作为视图和服务之间的信使。 – 2014-10-29 06:23:51

+0

甜美!多谢你们! – 2014-10-29 06:25:24

回答

3

所以最好的做法是依赖于具体项目的情况下,你的应用程序主要是整个代码大小,而且团队的规模,项目/订婚的长度等。对于一个小工具只有几百行代码,创建一个服务来封装$ http的单个使用是超过工程。它使您的项目更难,更容易阅读和维护。然而,对于许多模块,几十个文件,成千上万的代码,其中相同的业务逻辑可能需要跨多个控制器被重用行的一个全尺寸的应用程序,然后是的,这是有道理的你$http代码移到服务它可以独立封装,共享和测试。所以没有,为“正常”的应用程序(或中等尺寸大),在控制器使用$http不被认为是最好的实践模式。然而,对于一个有教育意义的示例/演示代码片段,或者一个非常小的项目,没关系。