Php AngularJS http工厂
我这里有一段代码,我只想知道从php/mysql获取数据的更好的代码。代码如下: 1。使用出厂设置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
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的信息,你可以创建工厂。谢谢你。让我更清楚了。