我将AngularJs用于我的WebUi(html)。为了确定已登录的用户,我正在HTML页面启动时调用https rest-web-service请求。但是http“ response”数据为空。 (在其他浏览器中或在ng-click事件中调用该调用时,其余Web服务运行良好。)
所以我的问题是:如何在启动时使用已填满的响应数据调用http请求?
HTML页面-调用我的javascript函数“ init()”:
<body ng-app="MY-APP" ng-controller="webui" ng-init="init()">
AngularJs-函数init():
var app = angular.module('MY-APP', []);
app.controller('webui', function($scope,$http,$log,$window) {
$scope.init = function() {
$scope.UserId = $scope.getUserId();
}
$scope.getUserId = function() {
$http.get( $scope.my-app-url + '/user/id' ).then(function (response) {
$scope.UserId = response.data.USERID;
return $scope.UserId;
});
}
}
答案 0 :(得分:0)
您所拥有的就是调用您的函数
var app = angular.module('MY-APP', []);
app.controller('webui', function($scope,$http,$log,$window) {
$scope.UserId=null;
var getUserId = function() {
$http.get( $scope.my-app-url + '/user/id' ).then(function (response) {
$scope.UserId = response.data.USERID;
});
}
//call your function
getUserId();
}
答案 1 :(得分:0)
问题不在于在启动功能中调用http请求。问题在于使用函数确定变量。
让我在一个简单的示例中进行解释。在我的函数init()中,我已经硬编码了变量定义,例如 $ scope.io =“ csv” ,它工作正常-这些变量可以在同一函数中使用而不会出现问题。但是由函数 $ scope.getMy-App-Url()确定的变量 $ scope.my-app-url 不能在以下函数 $ scope.getUserId()确定变量 $ scope.UserId ,因为此变量在该函数中是“未定义”的。
因此,如何声明或定义变量 $ scope.my-app-url 以便在以下函数 $ scope.getUserId()中使用它?
$scope.init = function() {
$scope.io = "csv";
$scope.my-app-url = $scope.getMy-App-Url();
$scope.UserId = $scope.getUserId();
}
$scope.getMy-App-Url = function() {
$http.get('my-app-url.json').then(function (response) {
$scope.my-app-url = response.data.MYAPPURL;
return $scope.my-app-url;
});
}
$scope.getUserId = function() {
$http.get( $scope.my-app-url + '/user/id' ).then(function (response) {
$scope.UserId = response.data.USERID;
return $scope.UserId;
});
}
答案 2 :(得分:0)
由于您的承诺依赖于另一个承诺,因此我将其重新编写,以确保未定义“ $ scope.my-app-url”。
$scope.getUserId = function() {
$http.get('my-app-url.json').then(function (response) {
$scope.my-app-url = response.data.MYAPPURL;
$http.get( $scope.my-app-url + '/user/id' ).then(function (response) {
$scope.UserId = response.data.USERID;
return $scope.UserId;
});
});
}
由于格式不正确,我无法对此发表评论。