【问题标题】:lazy-loaded states with ui-router带有 ui-router 的延迟加载状态
【发布时间】:2015-04-04 00:30:22
【问题描述】:

我的延迟加载库是这样的:ocLazyLoad,我正在尝试将它与 ui-router 一起使用。

我在两个单独的文件中声明了我的路由,这些文件在构建过程中连接在一起。以下是串联输出:

angular.module('asdf').config(['$stateProvider', '$locationProvider', '$urlRouterProvider', function($stateProvider, $locationProvider, $urlRouterProvider) {

    $urlRouterProvider.otherwise('/');
    $locationProvider.hashPrefix('!');

    $stateProvider
        .state('root', {
            url: '/',
            templateUrl: 'views/static/welcome.html'
        });
}]);

angular.module('asdf').config(['$stateProvider', function($stateProvider) {
    $stateProvider
        .state('cohort-definition-editor', {
            url: '/cohort-definition-editor',
            templateUrl: 'components/cohort-definition-editor/mui/cohort-definition-editor.html',
            controller: 'CDEController',
            data: {
                pageTitle: "Cohort Definition Editor",
                subTitle: "Cohort Definition Editor",
                category: "Apps"
            },
            params: {
                _form_LinkId: undefined
            },
            resolve: {
                dep: ['$ocLazyLoad', function($ocLazyLoad) {
                    // console.log('test');
                    return $ocLazyLoad.load([
                        'components/cohort-definition-editor/mui/cohort-definition-editor.min.js',
                        'components/cohort-definition-editor/mui/cohort-definition-editor.min.css'
                    ]);
                }]
            }
        });
}]);

(很多第二个文件是自动生成的,所以重复是故意的。)

我的问题是:在延迟加载状态下,我无法刷新页面。我将在此处开始我的页面加载:http://127.0.0.1:9001/#!/,然后单击带有ui-sref="cohort-definition-editor" 的链接,该链接将加载此网址:http://127.0.0.1:9001/#!/cohort-definition-editor(带有正确的状态/html 片段/等)。如果我刷新页面,我会看到一个“空”状态。通常情况下,views/static/welcome.html 会默认显示,但在应该显示cohort-definition-editor HTML 片段的地方我什么也得不到,而且 URL 仍然是正确的。

我在 ui-router 事件中添加了一堆观察者,但它们都不会在页面加载时触发。我还尝试添加一个 console.log 语句(见上文,在解决部分中评论),但它也没有触发,这让我相信页面加载时的 DI 有问题。但它并没有出错,所以很难追踪。

有没有更好的方法来延迟加载 ui-router 状态,还是我做错了?作为参考,我首先从here 了解到ocLazyLoad,它做了类似的事情,并且确实有效。

【问题讨论】:

    标签: javascript angularjs angular-ui-router lazy-loading


    【解决方案1】:

    幸运的是,如果您刷新页面但您的状态有一个未设置为默认值的必需参数(即,我有一个参数设置为undefined),那么根本无法加载路由因为它需要一个参数。因此,这里最好的做法是使参数具有默认值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-04
      • 2018-03-15
      • 1970-01-01
      相关资源
      最近更新 更多