在Angular JS中加载视图和控制器之前解析数据的最佳方法是什么?

时间:2017-02-20 05:04:25

标签: angularjs

我的Navbar和Sidebar页面在大多数页面中都很常见,因此我在NavbarController中加载了与LoggedInUser相关的所有数据。

此数据($ scope.loggedInUser)也用于其他控制器(子控制器)。由于调用获取用户数据是异步的,很多时候,子控制器尝试在从服务器返回数据之前访问数据。

确保父控制器的所有承诺在子控制器启动它之前解决的最佳方法是什么?

2 个答案:

答案 0 :(得分:0)

您应该使用$ stateProvider中的resolve。此函数可确保在加载新状态之前解析所有promise。

答案 1 :(得分:0)

解析是您可以在ngRoute和更强大的UI路由器中附加到路由的属性。解析包含一个或多个必须在路由更改之前成功解析的promise。这意味着您可以在显示视图之前等待数据可用,并简化控制器内部模型的初始化,因为初始数据是提供给控制器而不是控制器需要外出并获取数据。

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

})
控制器中的

app.controller("newsController", function (message) {
$scope.message = message;

});

希望这会对你有所帮助