[AngularJS]角的 JS︰ 我们可以设置解决或没有路由定义的控制器上的承诺吗?

发布时间: 2017/4/16 21:27:49
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我试图从服务器获取一些数据之前控制器得到呈现。

有找它遵守许多答案 routeProvider

但我主要的问题是我的控制器不会不受约束的任何路由。

那么有没有什么办法使这成为可能?

我有控制器在以下几个方面......

<!-- HERE I WANT TO BLOCK RENDERING TILL DATA GET LOAD   -->
<AppController>
    <ng-view> 
</AppController>

解决方法 1:

这听起来像 resolve 是你正在寻找的东西,但如果你不为此控制器使用一个路由表,你不会有此选项。为什么不只是解决你的控制器中的异步调用和设置范围变量内回调。这是我解释你的欲望,等待控制器"渲染",而 resolve 通过路由表将等待控制器实例化。观察以下......

module.controller('ctrl', function($scope, $http) {
    $http.get('/uri').then(function(response) {
        // set $scope variables here
    });

    console.log('executed first');
});

您还可以设置一个变量,以防止呈现关联的视图,如果您的数据调用是冗长。这将阻止 UI"舞蹈"。观察到上面的示例中的以下变化......

<div ng-controller="ctrl" ng-show="resolved"></div>

module.controller('ctrl', function($scope, $http) {

    $http.get('/uri').then(function(response) {

        $scope.resolved = true; // show rendering
    });
});

JSFiddle 链接-简化演示

JSFiddle 链接-演示ng-if

赞助商