如何在angularjs中使用http get从工厂返回业务对象
How to a return business object from factory using http get in angularjs
我是AngularJs新手。有没有人可以帮助在angularJS中使用http服务编写一个工厂,以便工厂返回给我一个业务对象,而不是承诺或在成功时为范围变量赋值。我在网上研究了很多文章,但所有的文章都使用回调函数或从http服务返回承诺。
需求:假设XMLtoJsonService是我的工厂,它将xml从本地文件夹转换为json。工厂应该是返回业务对象,以便在我的控制器中,我应该能够以以下方式使用
//controller
var obj = XMLtoJsonService.MethodName();
**(No promises or callback function should be used in controller)**
/*******service code****************/
App.factory('XmlToJsonSvc',
[ '$http', function($http) {
return {
get : function(path, callback) {
$http.get(path, {
transformResponse : function(data) {
// convert the data to JSON and provide
// it to the success function below
var x2js = new X2JS();
var json = x2js.xml_str2json(data);
return json;
}
}).success(function(data, status) {
//console.log('Sucess');
callback(data);
})
}
}
} ]);
/*********Controller Code **********/
var setData = function(data) {
return new Menus(data);
debugger
}
var path = "Configs/Config.xml";
XmlToJsonSvc.get(path, setData);
//代码运行正常//但我的要求是将这段代码转换为在我的控制器中//像var obj = XmlToJsonSvc.get(path)//obj应该有json对象,我将使用另一个服务
<!--In this funcion calling factory function restCall() from controller.
before that i have assigned a already created factory object to a scope variable in controller
.So whenever factory varaible updates,that update will be available to controller automatically.
Some kind of 2-way binding method from factory object-->
<!DOCTYPE html>
<html lang="en" ng-app="app">
<head>
<meta charset="UTF-8">
<title>Test</title>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
</head>
<body ng-controller="myCtrl">
{{obj.data1}}
<button ng-click="clickFn()">Clicking this will call service</button>
<script>
(function() {
var app = angular.module("app",[])
.controller("myCtrl",function(myFactory,$scope){
$scope.obj = myFactory.bObject;
$scope.clickFn = function(){
myFactory.restCall();
}
}).factory("myFactory",function($timeout){
var bObject = {
data1 :null
};
function restCall(){
$timeout(function(){
bObject.data1 = bObject.data1 ? false : true ;
},1000);
}
var service = {
bObject : bObject,
restCall : restCall,
}
return service;
});
}());
</script>
</body>
</html>
相关文章:
- 有没有一种方法可以防止img get请求使用css或js发生
- Angularjs工厂注入错误
- AngularJS错误:提供程序必须从$get工厂方法返回值
- 修复AngularJS错误:提供程序必须从$get工厂方法返回值
- 在工厂构造函数中解析 Restangular.get
- 将数据从输入字段传递到角度工厂中的 $http.get
- Angular 工厂未从 Soundcloud (SC.get) 请求返回数据
- AngularJS-错误:[$injector:pget]提供程序'函数()'必须定义$get工厂方法
- 是否可以将GET响应数据传递回同一工厂
- 如何创建一个使用http的工厂.Get并把它传递给angular中的多个控制器
- 如何在angularjs中使用http get从工厂返回业务对象
- 如何使用angular工厂从rest api返回http get请求
- & # 39; EventModel& # 39;必须从$get工厂方法返回一个值
- 供应商& # 39;任务# 39;必须从$get工厂方法返回一个值
- 必须从$get工厂方法返回一个值
- $http TypeError: Cannot read property 'get'未定义的——在工厂
- 供应商& # 39;xx # 39;必须从$get工厂方法返回一个值
- 如何使用angularjs工厂的get和set
- Angular提供商错误——必须定义$get工厂方法
- Angular提供程序必须从$get工厂方法中返回一个值