【发布时间】:2017-03-11 00:34:30
【问题描述】:
我是 AngularJs 的新手。任何人都可以帮助在 angularJS 中使用 http 服务编写工厂,以便工厂返回一个业务对象,而不是承诺或在成功时为范围变量赋值。我在网上研究了很多文章,但都是使用回调函数或从 http 服务返回承诺。
要求: 假设 XMLtoJsonService 是我的工厂,它将本地文件夹中的 xml 转换为 json。 factory 应该返回业务对象,以便在我的控制器中我应该能够以下列方式使用
//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);
//这段代码运行正常 //但我的要求是转换此代码,以便在我的控制器中它应该 //like var obj = XmlToJsonSvc.get(path) //obj 应该有 json 对象,我将使用另一个服务
【问题讨论】:
-
所以你打算阻止整个浏览器等待 http 响应?
-
NO 但我想使用可以返回业务对象的服务。我正在根据从服务返回的 json 对象初始化对象。
-
你应该在你的服务中加入承诺解析。它可能会起作用。
标签: javascript asp.net angularjs asp.net-mvc