我的主页正在加载,然后在页面加载后触发我的$ 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
});
}]);
HomeController中:
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 };
}
干杯。
答案 0 :(得分:4)
您正在寻找resolve。它允许您创建一个依赖于函数值或promise的路由,然后将其注入控制器并在控制器实例化时可用。
$routeProvider
.when("/news", {
templateUrl: "newsView.html",
controller: "newsController",
resolve: {
message: function(messageService){
return messageService.getMessage();
}
}
});
app.controller("newsController", function (message) {
$scope.message = message;
});
请注意,解析对象message
的属性名称与注入控制器的值相匹配。如果您使用最小安全代码的数组语法,它将是这样的:
app.controller("newsController", ['message', function (message) {
$scope.message = message;
}]);