2016-12-16 74 views
0

我有一個控制器文件夾在www/js/controllers我保持我的應用程序所需的所有控制器。但是當我啓動應用程序時,所有控制器都會立即加載。現在我怎麼才能加載那些正在使用視圖的控制器,並保持其他控制器的安靜。如何只在需要時才加載離子控制器?

+0

當然,它們只在渲染視圖時加載。你確定所有的控制器一次加載嗎? –

+0

您的意思是加載控制器實例本身或加載包含控制器的JavaScript文件? – devqon

+0

的文件....我期待減少我的應用程序的開始時間 – lakshay

回答

1

要動態加載控制器,您需要使用RequireJS。

http://requirejs.org/

  • 使用https://oclazyload.readme.io/docs/with-your-router

  • 或者, 試試這個:

    如果您正在使用ngRoute:

    $routeProvider 
         .when('/url', 
          { 
           templateUrl: '/views/abc.html', 
           resolve: resolveController('/controllers/abc.js') 
          }); 
    

    我們UI-Router:

    .state('abc',{ 
          url : '/abc', 
          templateUrl : 'views/abc.html', 
          resolve: resolveController('/controllers/abc.js') 
         }) 
    
    +2

    我得到'ReferenceError:resolveController未定義' – lakshay

    +2

    如何定義resolveController() – lakshay

    +0

    @resolveController是在這裏的功能。 – Ved

    0

    我不知道你在準備問什麼。

    請參閱JavaScript加載所有文件(甚至不會花費太多時間),而執行應用程序。請注意,文件僅加載(分配內存)不能執行除飛行功能外的功能。 Ex(Angularjs,Jquery,Underscore - 僅在第一次加載文件,但函數在我們使用時執行)。

    Angularjs是JS框架的權利?所以和上面相同,這裏我們告訴在路由或ng-controler指令中按照視圖執行控制器,請注意文件僅在之前加載。在單一視圖中,我們可以根據需要執行許多控制器(ng-controller)。

    創建控制器&基於IIFE的服務。這很好。