Javascript 在Angular JS中使用服务无法返回范围值
我刚刚尝试在Angular JS中创建一个服务,它成功地调用函数$http.get并返回值。但是,该值没有插入到范围变量中。 问题:怎么了Javascript 在Angular JS中使用服务无法返回范围值,javascript,angularjs,Javascript,Angularjs,我刚刚尝试在Angular JS中创建一个服务,它成功地调用函数$http.get并返回值。但是,该值没有插入到范围变量中。 问题:怎么了 angular.module('starter.controllers', []) .factory('UserService', function($http) { var data; return{ getData: function($http) { return $http.get
angular.module('starter.controllers', [])
.factory('UserService', function($http) {
var data;
return{
getData: function($http) {
return $http.get('http://www.website.com/call12').
success(function(response) {
/// console.log(JSON.stringify(response));
userData=response.data;
return userData;
}).error(function(data, status, headers, config) {
// log error
});
}
}
})
.controller('AppCtrl', function($scope, $ionicModal, $interval,$http,$rootScope,UserService) {
$scope.formData={};
$scope.userData={};
$scope.myCtrl= function(UserService,$http,$rootScope) {
UserService.getData($http).then(function(data,$rootScope) {
$scope.userData = data;
$scope.fullName = data.name;
$scope.balance = data.balance;
}}
$scope.formData.playerName= $scope.userData.name; // $scope.userData is undefined
$scope.myCtrl(UserService,$http);
})
模板
<form ng-submit="submit_editpw()" ng-controller="AppCtrl">
<pre>userData : {{userData}}</pre> //retuns data
<pre>name: {{fullName}}</pre> //returns empty
</form>
用户数据:{{userData}}//retuns数据
getData: function () {
return $http.get('http://m.sepakbola.cc/index.php/id/user/call12').success(function (response) {
userData = response.data;
return userData;
}).error(function (data, status, headers, config) {
// log error
});
}
名称:{{fullName}}//返回空
您没有正确使用异步getData
方法。由于这是一种方法,您应该使用它的然后方法:
angular.module('starter.controllers', [])
.factory('UserService', function($http) {
var data;
return{
getData: function() {
return $http.get('http://www.website123.com/call12');
}
}
})
.controller('AppCtrl', function($scope, $ionicModal, interval,$http,$rootScope,UserService) {
$scope.myCtrl= function(UserService,$http) {
$scope.userData={};
UserService.getData().success(function(reponse) {
$scope.userData=response.data;
});
}
还要确保getData
返回承诺:
在服务中,将承诺作为响应返回,在控制器中,使用承诺成功回调将值分配给userData
你好我犯了个错误。TypeError:UserService.getData(…)是未定义的脚本:UserService.getData().then(函数(数据){$scope.userData=data;})
确保getData
返回承诺:return$http.get(…)
.Hi@dfsq我在尝试获取服务变量值时遇到问题。你能帮助我吗?例如,`$scope.fullName=data.name;`//fullName在函数“$scope.formData.playerName=$scope.userData.name;”`//$scope.userData未定义`注意,在加载数据之前,您无法访问数据。因此,如果您试图在外部执行此操作,则它可能还不可用。它已完成加载http请求,并且可以在模板中查看userData.data.name的值,但模板中的fullName
仍然为空。那么这个$scope.formData.playerName=$scope.userData.name;//$scope.userData未定义
`
angular.module('starter.controllers', [])
.factory('UserService', function($http) {
var data;
return{
getData: function() {
return $http.get('http://www.website123.com/call12');
}
}
})
.controller('AppCtrl', function($scope, $ionicModal, interval,$http,$rootScope,UserService) {
$scope.myCtrl= function(UserService,$http) {
$scope.userData={};
UserService.getData().success(function(reponse) {
$scope.userData=response.data;
});
}