ngRouter到ui-router

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ngRouter到ui-router相关的知识,希望对你有一定的参考价值。

我最近购买了一个angularjs模板,我用它来构建我的应用程序,但是我注意到使用ngRouter而不是ui-router我更喜欢并且更熟悉。

我尝试包括ui-router并更改所有路由并且它有效,但是我的路线中有一些额外的代码,我仍然不明白,不知道放在哪里,这是我的仪表板的旧路线:

$routeProvider.when("/dashboard", {
    templateUrl: "views/dashboard.html",
    resolve: {
        deps: ["$ocLazyLoad", function(a) {
            return a.load([jqload.c3, jqload.sparkline])
            .then(function() {
                return a.load({
                    name: "app.directives",
                    files: ["scripts/lazyload/directives/sparkline.directive.js"]
                })
            })
            .then(function() {
                return a.load("angular-c3");
            })
            .then(function() {
                return a.load("easypiechart");
            })

        }]
    }
});

这就是我改为:

.state('admin.dashboard', {
    url: '/dashboard',
    views: {
        'content@': {
            templateUrl: '/_admin/views/dashboard.html',
            controller: 'DashboardCtrl'
        }
    }

正如您所看到的,缺少很多代码会影响我的仪表板的某些功能。我的问题是使用ui-router我在哪里解决所有代码:

resolve: {
        deps: ["$ocLazyLoad", function(a) {
            return a.load([jqload.c3, jqload.sparkline])
            .then(function() {
                return a.load({
                    name: "app.directives",
                    files: ["scripts/lazyload/directives/sparkline.directive.js"]
                })
            })
            .then(function() {
                return a.load("angular-c3");
            })
            .then(function() {
                return a.load("easypiechart");
            })

        }]
    }

我以前从来没有遇到过决心,我对angularjs很新,并且在切换到ui-router后不知道如何处理这个部分。

答案

resolve属性实质上告诉angularjs,在显示状态之前,其中的回调必须完成。 NgRouter有这个,但ui-router也是如此。 Here's some reading for you.

这段代码应该有效:

.state('admin.dashboard', {
    url: '/dashboard',
    views: {
        'content@': {
            templateUrl: '/_admin/views/dashboard.html',
            controller: 'DashboardCtrl'
        }
    },
    resolve: {
        deps: ["$ocLazyLoad", function(a) {
            return a.load([jqload.c3, jqload.sparkline])
            .then(function() {
                return a.load({
                    name: "app.directives",
                    files: ["scripts/lazyload/directives/sparkline.directive.js"]
                })
            })
            .then(function() {
                return a.load("angular-c3");
            })
            .then(function() {
                return a.load("easypiechart");
            })

        }]
    }
})

以上是关于ngRouter到ui-router的主要内容,如果未能解决你的问题,请参考以下文章

angular ,ngRouter 新增了 路由以后 更新到测试环境 不能跳转到正确页面。而是跳转到第一个路由页面?

UI-Router(解决)无法将数据传递到控制器

UI-Router:如何在切换视图时保留视图

将ui-router解析注入指令

为啥这个 angularjs ui-router 代码会使我的浏览器崩溃?

angularJS中的ui-router和ng-grid模块