AngularJS - 在加载任何 Controller 之前加载数据

标签 angularjs load single-page-application

我正在制作一个单页应用程序(SPA)。我做了一个名为 InitialControler 的 Controller 在此 url (local.app/init) 上从服务器加载数据。

我希望这个 url 在任何其他 url 之前打开。我正在使用 ui-router,我做了一个 $state.go('init').run()函数,但它仍然在 'init' 之前加载请求的页面页

最佳答案

首先创建名为 app 的状态

$stateProvider.state('app', {
    abstract:    true,
    templateUrl: "assets/partials/container.html",
    controller:  'AppCtrl',
    resolve: {
        init: function(MyFactory) {
            return MyFactory.resolver();
        }
    }
});

现在,您创建的任何新状态都应该是 app 的子状态。状态。这也很好,因为它成为您的根范围。除非您的工厂解决,否则状态不会处理。

这就是您创建工厂的方式
app.factory('MyFactory', function($http){
    var items = [];
    return {
        resolver: function(){
            return $http.get('my/api').success(function(data){
                items = data;
            })
        },
        get() {
            return items;
        }
    }
});

现在在任何其他状态
$stateProvider.state('app.items', {
    url:    '/items',
    templateUrl: "assets/partials/items.html",
    controller:  function($scope, MyFactory){
        $scope.items = MyFactory.get();
    }
});

更多关于状态解析

https://github.com/angular-ui/ui-router/wiki#resolve

关于AngularJS - 在加载任何 Controller 之前加载数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27839515/

相关文章:

CPU 负载和 CPU 温度的 C++ 代码

javascript - 如何使用 Promise 和 Angular 实现 Ajax 调用?

twitter-bootstrap - Bootstrap Collapse 加载在页面加载时折叠

javascript - Imgur API(400 错误)

codeigniter 无法加载库

reactjs - React-router 和漂亮的 URL

node.js - 对于 React 前端来说,使用 Node.js 比 symfony 有何优势?

angular - 部署单页应用 Angular : 404 Not Found nginx

javascript - 我如何使用 angularJS 将可拖动指令应用于 Bootstrap 模式?

AngularJS UI 轮播自定义上一个和下一个按钮