gpt4 book ai didi

javascript - 解决 MainController 的 promise

转载 作者:行者123 更新时间:2023-11-29 21:31:30 31 4
gpt4 key购买 nike

在创建我的最顶层 Controller 之前,我试图弄清楚如何解决 promise 。我正在使用 ui.router 所以我知道如何为我的不同路线解决 Controller 的 promise 。但是我不知道如何在我的第一个 Controller 加载之前解决它。

这是我的 index.html 的摘录:

<html lang="de" x-ng-app="myapp">
<body x-ng-controller="MainController">
...
<div id="header" x-ng-include="'top.html'"></div>
...
<div id="viewDiv" ui-view></div>
...
</body>
</html>

我想从服务器加载当前季节(以及其他很少更改的数据),并将其注入(inject)到我的 top.html header 和一些 View Controller 的 Controller 中。我有一项服务可以加载我当前的季节并返回一个 promise :

services.factory('RestAccess', function(Restangular) {
return {
loadCurrentSeason : loadCurrentSeason
};

function loadCurrentSeason() {
return Restangular.one('season','current').get();
}
});

我想在我的 MainController 中注入(inject)此函数的 RESOLVED promise :

controllers.controller('MainController', function($scope, currentSeason, SomeService) {
$scope.season = currentSeason;
$scope.stuff = SomeService.loadStuff(currentSeason);
});

我该如何配置?这是为负责 body-element 的 Controller 准备的。所以我还没有在这里使用任何路由。

我想要这样的东西

resolve: {
currentSeason : function(RestAccess) {return RestAccess.loadCurrentSeason();}
}

但是我不知道把它放在哪里。

最佳答案

您可以对抽象父状态进行解析,该状态将在各个具体的子路由解析之前解析(因此可以这些解析中使用) .

例子:

//In module.config()...
...
$stateProvider
.state('home', {
url:'/',
template: '<div ui-view></div>',
abstract: true,
resolve: {
'parentResolve':['yourService', function(yourService){ /*Return promise*/ }]
}
})
.state('home.child', {
url:'/child',
template: '<div>After home</div>',
controller: ['parentResolve', function(parentResolve){ /*Use parentresolve*/ }],
resolve: {
'childResolve':['parentResolve','yourService', function(parentResolve, yourService){ /*Parent resolve is available, as is service*/ }]
}
}
...

此外,您可以使用 module.run()在它尝试加载任何状态之前运行一些东西。

关于javascript - 解决 MainController 的 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36237332/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com