2015-03-31 53 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),那麼路由根本無法加載爲它需要一個參數。因此,這裏要做的最好的事情是讓參數具有默認值。