Php AngularJS http工厂

Php AngularJS http工厂,php,angularjs,Php,Angularjs,我这里有一段代码,我只想知道从php/mysql获取数据的更好的代码。代码如下: 1。使用出厂设置 app.factory('todosFactory', function($http) { var factory = {}; factory.getTodos = function() { return $http.get('todo-list.php'); }; return factory; }); app.controller('ListC

我这里有一段代码,我只想知道从php/mysql获取数据的更好的代码。代码如下:

1。使用出厂设置

app.factory('todosFactory', function($http) {
    var factory = {};
    factory.getTodos = function() {
        return $http.get('todo-list.php');
    };
    return factory;
});

app.controller('ListController', function($scope, todosFactory, $http) {

    function init() {
        todosFactory.getTodos()
        .then(function successCallback(data) {
            $scope.todos = data;
        }, function errorCallback(data) {
            console.log(data);
        });
    }

    init();

});
2。直接在控制器中获取请求

app.controller('ListController', function($scope, $http) {
 //Init
    function init() {
        $http.get('todo-list.php')
        .then(function successCallback(data) {
            $scope.todos = data;
        }, function errorCallback(data) {
            console.log(data);
        })
    }

    init();
});
使用其中一个比另一个有好处吗?谢谢。

费弗利比

无论如何,这取决于你将如何使用它

看看AngularJS:启动并运行pag。88

如果服务器上有RESTFUL API,则可以进一步减少 使用AngularJS的可选模块编写的代码量, ngResource。ngResource允许我们获取API端点并创建 AngularJS围绕它提供服务。例如,考虑项目的API 在服务器端,其行为如下所示:

•获取对/api/project的请求/返回一系列项目

•GET request to/api/project/17返回了ID为17的项目

•将请求发布到/api/project/,并将项目对象创建为JSON 新项目

•将项目对象作为JSON发布到/api/project/19 更新了ID为19的项目

•删除对/api/project的请求/删除所有项目

•删除对/api/project/23的请求删除ID为23的项目

如果我们有这样一个API,那么就不用手动创建项目了 资源,并单独包装
$http
请求,我们可以 按如下方式创建服务:

angular.module('resourceApp', ['ngResource'])
.factory('ProjectService', ['$resource', function($resource) {
return $resource('/api/project/:id');
}]);
这将自动为我们提供ProjectService上的方法,如: •
ProjectService.query()
获取项目列表 •
ProjectService.save({id:15},projectObj)
用 ID15•
ProjectService.get({ID:19})
获取单个项目 身份证号码19

这基本上意味着您可以将
$http
ngResource
一起使用,使控制器更加精简,同时拥有强大的
.factory
。然而,如果您打算使用它一次,那么您可以在控制器中使用它


希望这对你有帮助

我使用工厂,就像你的第一个例子,因为我使用了几个控制器,对于每一个,我只是简单地放一个依赖项和一个参数。而且,如果地址发生变化,我只有一个本地地址需要改变。但是,我建议您使用ngResource,以获得资源工厂更干净的代码。您可以查看此内容以获得更好的说明。工厂的其他几个好处是,您可以对多个API调用使用公共错误处理程序函数。如果需要,也可以非常简单地将函数调用移动到路由
resolve
,不必担心我提到的
resolve
。这是一种在加载控制器和模板之前返回数据的方法,或者是在任何操作可以继续之前获取应用程序所需的数据的方法。你的工厂看起来很好,如果你需要的话,你可以很容易地增加它,但它是你提到的两种方法中最好的一种…即使你还没有利用它。也许。。。如果您的代码没有增长。。。你可以使用K.I.S.S.原则。。。把所有的东西都放在一个控制器上。。。我们正在讨论一个使用angular的项目。但是,出于好奇,为了了解更多关于angular的信息,你可以创建工厂。谢谢你。让我更清楚了。