angularjs 手动加载以及误区

           一、背景

            在一个页面内,如果要同时加载两个互不依赖的app,比如说通过include的方式加载其它页面。由于互不依赖你不可能把其它app依赖注入到当前app中。然而ng-app一个页面又只能存在一个。规则为第一个出现的ng-app。比如如下:

  
             
        
    
         
        
                     
                
            
                
                    
                        
                            
                        
                        
                            
                                                             
                            
                        
                    
                
                
                    
                        
                    
                
            
        
    
               控制器VideoController、CommentController、DialogController、RelateVideoController并不在app.main这个模块之中。

               为了解决这个办法,我们可以只用手动加载,方式如下:

              

angular.bootstrap(document.getElementById("video"),['app.video','app.loading','app.dialog','ngDialog']);
              二、误区

               这里有一个坑,那就是通过这种方式,并不会调用相应的app.js文件,因此,你在app.js中申明的依赖注入并不会注入进去,你就需要在手动加载时注入进去。比如在

app.video的app.js中实际依赖注入了app.loading和app.dialog。

(function(angular){
    if(typeof(app) == "undefined")
        app={};
    app.video=angular.module('app.video',
        ['app.loading','app.dialog']
    );
})(window.angular);

               但是由于手动加载,即使应用了app.js文件,也不会通过app.js加载app.loading,app.dialog。因此需要再手动加载中依赖注入。如果去掉手动加载,单纯应用js则可以直接注入app.loading和app.dialog。


               

你可能感兴趣的:(angularjs)