首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在angularjs页面加载时调用$http服务请求

在angularjs页面加载时调用$http服务请求
EN

Stack Overflow用户
提问于 2015-07-20 10:35:22
回答 3查看 4.2K关注 0票数 0

我有一个有角度的js应用程序,它在访问包含一些查询字符串参数的URL链接后从另一个应用程序加载:

代码语言:javascript
复制
http://myDomain/clover/?merchant_id=65AY4FNRE9PSG&employee_id=Z1TZ0S0H758TG&client_id=9WJBRXSF1XM8P&code=c0ae98d6-d13c-2c4d-f601-d2ebd3d58ae9#/login

我想做两件事:

  1. 注册功能:我有用于注册的REST,但是我需要发送merchant_idclient_id代码,这些代码需要从上面的URL获取到注册API,这样才能完成注册。一旦注册成功,就需要执行以下步骤,即登录
  2. 登录应用程序:我也有REST用于登录,并需要向employee_id发送用户名和密码。

这两个功能都应该发生在页面加载中.

我已经引导了我的角度应用程序,比如:

代码语言:javascript
复制
angular.element(document).ready(function () {
   angular.bootstrap(document,['mPos']);
});

我的服务代码是:

代码语言:javascript
复制
mPosServices.factory('mosServiceFactory', function ($http, $rootScope, $cookies, $q) {
    return{

        loginService: function (userData) {
            var loginService = $http({
                method: 'get',
                data: {
                    'islogin': true
                },
                url: 'http://myServiceURL/oauth/token?grant_type=password&client_id=restapp&client_secret=restapp&username=' + userData.username + '&password=' + userData.password
            });
            return loginService;
        },

        enroll: function (signupdata) {
            var signup = $http({
                method: 'post',
                data: signupdata,
                url: 'http://myServiceURL/merchant/enrollment'
            });
            return signup;
        }

    };
});

我应该如何获取那些URL参数ao页面加载?如何在页面加载时调用$http请求,以便可以进行注册和登录?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-07-31 03:58:21

如果您首先加载登录视图,那么您可以在该loginController中调用您的服务,一旦登录路由启动,将在页面加载上调用该服务。

代码语言:javascript
复制
myCtrl.controller('loginController', ['$scope', '$rootScope', 'mosServiceFactory', '$location', '$cookies', '$modal', 'ngDialog', function ($scope, $rootScope, mosServiceFactory, $location, $cookies, $modal, ngDialog) {

//call your services here and it will be called once login view gets initiated.
            });
        };
   }]);
票数 0
EN

Stack Overflow用户

发布于 2015-07-20 10:43:11

你最好的选择是使用像https://github.com/angular-ui/ui-router这样的东西

您可以配置$on.'$stateChangeStart‘事件,以便在它开始加载视图之前运行您想要的任何东西,或者使用"resolve“,这在某种程度上是类似的。还可以在加载类似于so (参数s&d)的视图之前从查询字符串中提取参数:

代码语言:javascript
复制
.state('pubrun', {
        url: '/pubrun?s&d',
        controller: 'pubCtrl',
        controllerAs: 'vm',
        templateUrl: 'views/partials/pub/pubrun.html',
    })

然后在我的控制器中访问该视图:

代码语言:javascript
复制
this.query.studyId = $stateParams.s;
this.query.distId = $stateParams.d;
票数 0
EN

Stack Overflow用户

发布于 2015-07-20 10:52:19

您可以使用module.run()这样做,如下所示:

代码语言:javascript
复制
mPosServices.run(function(mosServiceFactory) {

  mosServiceFactory.loginService({
    username: 'foo',
    password: 'bar'
  }).then(function(res) {
    // do something with res
  });

});

博士:https://docs.angularjs.org/api/ng/type/angular.Module#run

Update:对于解析URL,您可以在此处使用https://stackoverflow.com/a/7826782/1438522片段

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31514299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档