角度 - 在页面加载时触发$http.get

Angular - Fire $http.get on page load

本文关键字:http get 加载 角度      更新时间:2023-09-26

我的主页正在加载,然后在页面加载后触发我的$http.get()请求。

如何在页面加载之前先触发请求,以便我可以在页面上使用返回的数据?

路由:

var leisureApp = angular.module('leisureApp', ["ngRoute"]);
leisureApp.config(["$routeProvider", "$locationProvider",
    function ($routeProvider, $locationProvider) {
        $routeProvider
            .when("/home", {
                templateUrl: "Scripts/HTML/Home.html",
                controller: "HomeController"
            })
            .when("/login", {
                templateUrl: "Scripts/HTML/Login.html",
                controller: "LoginController"
            })
            .when("/time", {
                templateUrl: "Scripts/HTML/Time.html"
            })
            .otherwise({
                redirectTo: "/home"
            });
        $locationProvider.html5Mode({
            enabled: true,
            requireBase: false
        });
    }]);

主控制器:

angular.module('leisureApp')
    .controller('HomeController', ['$scope', 'ADAuth', function ($scope, ADAuth) {
        $scope.ADAuth = ADAuth;
    }])

    .factory('ADAuth', function ($http) {
        return $http.get('Home/GetUser');
    })

MVC 控制器方法:

public JsonResult GetUser()
{
    var user = new LeisureUser();
    user.ActiveDirectoryName = HttpContext.User.Identity.Name;
    return new JsonResult { Data = user, JsonRequestBehavior = JsonRequestBehavior.AllowGet };
}

干杯。

你正在寻找解决方案。它允许您根据函数值或承诺创建路由,然后将其注入控制器,并在控制器实例化时可用。

$routeProvider
    .when("/news", {
        templateUrl: "newsView.html",
        controller: "newsController",
        resolve: {
            message: function(messageService){
                return messageService.getMessage();
            }
        }
    });
app.controller("newsController", function (message) {
    $scope.message = message;
});

请注意,resolve 对象的属性名称message与注入控制器的值匹配。如果您将数组语法用于最小安全代码,它将如下所示:

app.controller("newsController", ['message', function (message) {
    $scope.message = message;
}]);