在 Angular JS 中使用服务无法返回范围值
using service in Angular JS cannot return the scope value
我刚刚尝试在 Angular JS 中创建一个服务,它成功地调用函数 $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>
您没有正确使用异步getData
方法。由于这是一个承诺对象,您应该使用其then
方法:
UserService.getData().then(function(data) {
$scope.userData = data;
});
还要确保getData
返回一个承诺:
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
});
}
在服务中返回承诺作为响应,在控制器中使用承诺成功回调将值分配给用户数据
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;
});
}
相关文章:
- 如何将闭包内的值返回到外部范围
- 范围变量返回长度错误
- 如何在 Google 应用脚本中 sendEmail 函数的范围内的唯一非空白列中返回值
- 返回Javascript中给定正则表达式的文本范围数组
- Angular$http返回数据,但不返回'不适用于范围
- d3范围/域返回负值
- 在全局范围内执行文件,而不是返回导出的对象
- 我从闭包返回的函数在外部范围内是否可用
- 我的弹性查询中出错 - 范围返回错误的请求
- 从显示为文本的范围中返回最小和最大数字
- 努力将结果从工厂返回到范围
- 在 Angular JS 中使用服务无法返回范围值
- 如何让此函数从范围中添加或减去并返回它
- 主干.js Model.get() 返回 undefined, 范围使用 coffeescript + coffee t
- Angular js 指令控制器访问范围属性,但返回未定义
- AngularJS 指令范围和$compile - 返回空白的变量
- Javascript 范围:为什么 foo 返回未定义
- JavaScript 函数返回范围
- 一起使用 .map(.range(1)) 的目的是什么?范围始终返回 [0]
- 在Google Apps Script中返回“范围”而不是实际字符串