2015-03-31 55 views
0

我的懒加载库是这样的:ocLazyLoad,我试图用它与ui-router延迟加载状态与ui路由器

我对那些在构建过程中连接在一起的两个单独的文件中声明我的路线。这里是级联的输出是:

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/#!/,然后点击加载此URL的ui-sref="cohort-definition-editor"的链接:http://127.0.0.1:9001/#!/cohort-definition-editor(具有正确的状态/ html片段/ etc)。如果我刷新页面,我会迎来一个“空”状态。通常,默认情况下会显示views/static/welcome.html,但我什么也没有得到,我应该显示cohort-definition-editorHTML片段,并且URL仍然是正确的。

我已经添加了一群观察者到UI路由器事件,并且他们都没有在页面加载时触发。我也尝试添加一个console.log语句(参见上文,在解析部分中进行了评论),但也没有触发,导致我相信pageload上的DI有问题。虽然没有出错,所以很难追踪。

是否有延迟加载UI路由器状态更好的办法,还是我只是做错了?作为参考,我第一次从here得知ocLazyLoad,它做了类似的事情,它绝对有效。

回答

0

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