AngularJS 工厂、服务和 HTTP 使用
AngularJS Factory, Service and HTTP Usage
我是学习新手 angular 并且无法理解一些基础知识。
我的控制器线如下所示:
$scope.test = fileLoader.loadFile();
我的工厂服务如下所示:
angular.module('myWellnessTrackerApp')
.factory('fileLoader', function($http) {
return{
loadfile : function(fileLoc){
$http.get('data/sideEffects.json').success(function(data) {
// you can do some processing here
return data;
});
}
};
});
这会引发错误。但是当我的控制器线是
$scope.test = fileLoader.data;
而我的服务是
angular.module('myWellnessTrackerApp')
.factory('fileLoader', function($http) {
var obj = {content:null};
$http.get('data/sideEffects.json').success(function(data) {
// you can do some processing here
obj.content = data;
});
return obj;
});
我不明白,我希望能够理解如何制作服务,尤其是用于请求页面或本地文件并返回的 HTTP 服务包装器。
谢谢
你不能只做
$scope.test = fileLoader.loadFile();
loadFile
是一个异步调用,您不能从中 return!您可以使用 .then
来继续承诺模式。您的工厂将更改为:
loadFile : function(fileLoc){
return $http.get('data/sideEffects.json').then(function(result) {
// you can do some processing here
return result.data;
});
}
还有你的控制器:
fileLoader.loadFile().then(function(data) {
$scope.test = data;
});
我是学习新手 angular 并且无法理解一些基础知识。
我的控制器线如下所示:
$scope.test = fileLoader.loadFile();
我的工厂服务如下所示:
angular.module('myWellnessTrackerApp')
.factory('fileLoader', function($http) {
return{
loadfile : function(fileLoc){
$http.get('data/sideEffects.json').success(function(data) {
// you can do some processing here
return data;
});
}
};
});
这会引发错误。但是当我的控制器线是
$scope.test = fileLoader.data;
而我的服务是
angular.module('myWellnessTrackerApp')
.factory('fileLoader', function($http) {
var obj = {content:null};
$http.get('data/sideEffects.json').success(function(data) {
// you can do some processing here
obj.content = data;
});
return obj;
});
我不明白,我希望能够理解如何制作服务,尤其是用于请求页面或本地文件并返回的 HTTP 服务包装器。
谢谢
你不能只做
$scope.test = fileLoader.loadFile();
loadFile
是一个异步调用,您不能从中 return!您可以使用 .then
来继续承诺模式。您的工厂将更改为:
loadFile : function(fileLoc){
return $http.get('data/sideEffects.json').then(function(result) {
// you can do some processing here
return result.data;
});
}
还有你的控制器:
fileLoader.loadFile().then(function(data) {
$scope.test = data;
});