WearyMonkey / ngtemplate-loader

Include AngularJS templates in the Webpack bundle and preload the template cache.
MIT License
238 stars 78 forks source link

module( 'x' ).run() will not run asynchronously #38

Open neekey opened 8 years ago

neekey commented 8 years ago

Hi, I'm trying to build a SPA which load controllers and templates asynchronously. I have a dashboard module like below:

var html = require( './view.html' );

angular.module( 'app' ). controller( 'dashboardCtrl', function(){
    /../
}); 

and in some point I will dynamically load this module:

require.ensure( [ 'dashboard' ], function(){
   ....
})

In the dev mode, I can see that ngtemplate-loader had generated the correct code, but I can not get the html from $templateCache.get(), then I hack the source code of ngTemplate-loader, add some debug code ( like alert(1) ) into the callback of module( 'x' ).run(), but the hack code is not executed.

I think the problem is that angular.module.run will not be executed again after angular finished its initialization.

I did a little test below:

angular.module( 'app', [] );
angular.module( 'app' ).run(function(){ console.log( 'run 1' ); });    // output: "run 1"

setTimeout(function(){
    angular.module( 'app' ).run(function(){ 
        console.log( 'run 2' );     // never executed.
    });
}, 1000);
neekey commented 8 years ago

this https://github.com/WearyMonkey/ngtemplate-loader/pull/26 seems to solve this problem

huang-xiao-jian commented 8 years ago

The same issue when define route templateUrl, how do you resolve this? @neekey