如何在AngularJS中创建主函数库
我想在AngularJS中为CRUD开发一组函数(类似于库),这样我就可以在我的项目的几个实体中重用它们。对于服务器通信,我使用$resource创建工厂,并相应地使用$资源工厂如下所示: 模型文件:如何在AngularJS中创建主函数库,angularjs,javascript,Angularjs,Javascript,我想在AngularJS中为CRUD开发一组函数(类似于库),这样我就可以在我的项目的几个实体中重用它们。对于服务器通信,我使用$resource创建工厂,并相应地使用$资源工厂如下所示: 模型文件: var get_entity_model = angular.module("app.getentity", []).factory('getEntity', ['$resource', function($resource) { return{ entit
var get_entity_model = angular.module("app.getentity", []).factory('getEntity', ['$resource', function($resource) {
return{
entity_view: $resource(baseurl+'/rest/'+serviceName+'/entity/:id/?app_name='+appName+'&fields=*', null, {'update': { method:'PUT' }})
}
}]);
getEntity.entity_view.get(
function(entity_list){
},
function(error){
}
)
var api = angular.module("app.entity_api", []).factory('entity_factory', ['$resource','getEntity',function($resource,getEntity) {
var entity_factory = {};
entity_factory.get_entity = function(callback){
getEntity.entity_view.get().$promise.then(
function(data){
callback(data.record);
}
);
}
return entity_factory;
}]);
api.controller("sample",['entity_factory','getEntity','$scope',function(entity_factory,getEntity,$scope){
$scope.init = function(){
entity_factory.get_entity(
function(data){
console.log(data);
}
);
}
$scope.init();
}])
这是我如何在控制器中使用它的
控制器文件:
var get_entity_model = angular.module("app.getentity", []).factory('getEntity', ['$resource', function($resource) {
return{
entity_view: $resource(baseurl+'/rest/'+serviceName+'/entity/:id/?app_name='+appName+'&fields=*', null, {'update': { method:'PUT' }})
}
}]);
getEntity.entity_view.get(
function(entity_list){
},
function(error){
}
)
var api = angular.module("app.entity_api", []).factory('entity_factory', ['$resource','getEntity',function($resource,getEntity) {
var entity_factory = {};
entity_factory.get_entity = function(callback){
getEntity.entity_view.get().$promise.then(
function(data){
callback(data.record);
}
);
}
return entity_factory;
}]);
api.controller("sample",['entity_factory','getEntity','$scope',function(entity_factory,getEntity,$scope){
$scope.init = function(){
entity_factory.get_entity(
function(data){
console.log(data);
}
);
}
$scope.init();
}])
这里,实体视图是表名。我正在传递所有相关函数,如分页和sub请求,以获取相关表的数据等,我将代码放入上述请求的成功函数中
现在我想建立一个库,在这里我可以定义所有这些东西,只需调用函数,我就可以得到所有这些东西,比如:
entity.getEntity()
应返回与上述代码相同的结果
我尝试过为上面的任务创建工厂,但它似乎需要回调函数,而工厂中的函数将只返回我已经从模型文件中获取的数据,所以我需要使其紧凑且易于使用
工厂文件中的工厂代码:
var get_entity_model = angular.module("app.getentity", []).factory('getEntity', ['$resource', function($resource) {
return{
entity_view: $resource(baseurl+'/rest/'+serviceName+'/entity/:id/?app_name='+appName+'&fields=*', null, {'update': { method:'PUT' }})
}
}]);
getEntity.entity_view.get(
function(entity_list){
},
function(error){
}
)
var api = angular.module("app.entity_api", []).factory('entity_factory', ['$resource','getEntity',function($resource,getEntity) {
var entity_factory = {};
entity_factory.get_entity = function(callback){
getEntity.entity_view.get().$promise.then(
function(data){
callback(data.record);
}
);
}
return entity_factory;
}]);
api.controller("sample",['entity_factory','getEntity','$scope',function(entity_factory,getEntity,$scope){
$scope.init = function(){
entity_factory.get_entity(
function(data){
console.log(data);
}
);
}
$scope.init();
}])
下面是我如何调用控制器中的函数:
控制器代码:
var get_entity_model = angular.module("app.getentity", []).factory('getEntity', ['$resource', function($resource) {
return{
entity_view: $resource(baseurl+'/rest/'+serviceName+'/entity/:id/?app_name='+appName+'&fields=*', null, {'update': { method:'PUT' }})
}
}]);
getEntity.entity_view.get(
function(entity_list){
},
function(error){
}
)
var api = angular.module("app.entity_api", []).factory('entity_factory', ['$resource','getEntity',function($resource,getEntity) {
var entity_factory = {};
entity_factory.get_entity = function(callback){
getEntity.entity_view.get().$promise.then(
function(data){
callback(data.record);
}
);
}
return entity_factory;
}]);
api.controller("sample",['entity_factory','getEntity','$scope',function(entity_factory,getEntity,$scope){
$scope.init = function(){
entity_factory.get_entity(
function(data){
console.log(data);
}
);
}
$scope.init();
}])
问题是,我的entity_factory代码将只返回来自服务器的数据,而我必须在回调函数中执行的其他代码与我当前的练习并没有太大区别。因此,问题是,我如何实现我的目标,即创建一个包含额外代码的函数库,这些代码返回完整的编译结果,从而使代码可用于其他实体并紧凑。我喜欢您正在考虑创建一个库,但在这种情况下,不要重新发明轮子并节省宝贵的时间。退房,你的任务就会简单得多。Restangular是一个AngularJS服务,它用最少的客户端代码简化常见的GET、POST、DELETE和UPDATE请求。它非常适合任何使用RESTful API数据的Web应用程序。这取决于您想对数据做什么。如果您想以某种方式“硬编码”处理返回的数据,请告诉我们它是什么。您还可以使用
$resource
的方法返回空数组,并在数组到达时填充数据。感谢您的回复。我想对数据执行CRUD操作,我需要获取、发布和更新数据,为此我需要一个lib,所以每当我需要获取、发布或更新数据时,我只需要调用entity.getEntity()、entity.postEntity(数据)、entity.updateEntity(id),问题是什么?为什么不能用上面的代码这样做呢?因为我必须在调用回调函数的控制器中传递回调函数。请检查最后一个控制器文件代码。您希望发生什么?您想对这些数据做什么?