gpt4 book ai didi

angularjs - 在 Controller 中调用工厂服务

转载 作者:行者123 更新时间:2023-12-03 07:30:40 24 4
gpt4 key购买 nike

在我的 Controller 中调用使用 .factory 创建的服务时遇到问题。
代码如下所示。
工厂(app.js):

.factory('Database',function($http){

return {

getDatabase: function(){

var database = {};

$http.get('http://localhost:3001/lookup').
success(function(data){

database.companyInfo = data.info.companyInfo;
});


}).
error(function(data){
console.log('Error' + data);
});

return database;

}
};
})

Controller :
angular.module('webClientApp')
.controller('MainCtrl', function (Database,Features,$scope,$http) {




$scope.databaseString = [];
$scope.quarters = ['Q1','Q2','Q3','Q4'];
$scope.years = ['2004','2005','2006','2007','2008','2009','2010',
'2011','2012','2013','2014'];
$scope.features = Features.getFeatures();
$scope.database = Database.getDatabase();

console.log($scope.database);

现在,当我检查 Firebug 中的元素时,我得到了 console.log($scope.database)在 GET 语句结果之前打印出来。 $scope.database显示为 Object {}所有的礼节都到位了。
但是,如果我尝试使用 console.log($scope.database.companyInfo)我收到了 undefined结果,我应该得到 data.info.companyInfo' that I passed from the数据库服务(在这种情况下是一个数组)。

这里有什么问题?有人能帮我吗?
(如果您需要澄清,请告诉我..)

最佳答案

$http.get() 调用是异步的,并且使用了 promise 对象。因此,根据您提供的代码,您很可能在服务中运行成功方法之前输出 $scope.database。

我构建了所有的服务方法来传递成功或失败的函数。这将是服务:

.factory('Database',function($http){

return {

getDatabase: function(onSuccuess,onFailure){

var database = {};

$http.get('http://localhost:3001/lookup').
success(onSuccess).
error(onFailure);

}
};
})

这将是 Controller 代码:
angular.module('webClientApp')
.controller('MainCtrl', function (Database,Features,$scope,$http) {


$scope.databaseString = [];
$scope.quarters = ['Q1','Q2','Q3','Q4'];
$scope.years = ['2004','2005','2006','2007','2008','2009','2010',
'2011','2012','2013','2014'];
$scope.features = Features.getFeatures();
Database.getDatabase(successFunction,failureFunction);

successFunction = function(data){
$scope.database = data.info.companyInfo;
console.log($scope.database);
});

failureFunction = function(data){
console.log('Error' + data);
}

关于angularjs - 在 Controller 中调用工厂服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21989300/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com