解决angular单个页面只能加载一个ng-app的问题
2016-01-23 22:01
726 查看
在实践中,发现如果一个页面有多个ng-app,angular只会处理第一个ng-app
相关问题:
单个angular页面能否有两个ng-app 开源中国社区
http://stackoverflow.com/questions/18571301/angularjs-multiple-ng-app-within-a-page
问题重现:
运行后只会输出:
Hello angular
解决办法:
使用
在,js代码最后加上一句:
当然,在第二个ng-app接管的div上要加一个id属性dir并且去掉第二个ng-app。
所以最终两个ng-app能同时存在于一个页面的完整示例代码是:
对于angular.bootstrap的一点探讨:
1.使用ng-app,页面加载时会这样处理:
angular找到ng-app标记后,首先加载与module相关的directive
创建应用相关的injector(依赖管理器)
开始对ng-app为根节点的DOM“编译”
2、angular.bootstrap方法可以理解为省去查找ng-app的过程,传给bootstrap的参数一个为DOM对象,另一个为模块名数组。
相关问题:
单个angular页面能否有两个ng-app 开源中国社区
http://stackoverflow.com/questions/18571301/angularjs-multiple-ng-app-within-a-page
问题重现:
<!Doctype html> <html> <head> <meta charset="utf-8"> <title></title> <style> </style> <script src="js/jquery.min.js"></script> <script src ="js/angular.js"></script> <script > var app = angular.module("myapp",[]); app.directive("hello",function(){ return { restrict:"E", template:'<h1>Hello angular</h1>', replace:true } }); var app2 = angular.module("dir",[]).run(function($templateCache){ $templateCache.put("header.html","<h2>use templateCache</h2>"); }); app2.directive("dir",function($templateCache){return { restrict:"E", template:$templateCache.get("header.html"), replace:true }}); </script> </head> <body > <div ng-app="myapp"> <hello></hello> </div> <div ng-app="dir"> <dir></dir> </div> </body> </html>
运行后只会输出:
Hello angular
解决办法:
使用
angular.bootstrap手动将第二个ng-app加入控制:
在,js代码最后加上一句:
angular.bootstrap($("dir"),['dir']);
当然,在第二个ng-app接管的div上要加一个id属性dir并且去掉第二个ng-app。
所以最终两个ng-app能同时存在于一个页面的完整示例代码是:
<!Doctype html> <html> <head> <meta charset="utf-8"> <title></title> <style> </style> <script src="js/jquery.min.js"></script> <script src ="js/angular.js"></script> </head> <body > <div ng-app="myapp"> <hello></hello> </div> <div id="dir" > <dir></dir> </div> <script > var app = angular.module("myapp",[]); app.directive("hello",function(){ return { restrict:"E", template:'<h1>Hello angular</h1>', replace:true } }); var app2 = angular.module("dir",[]).run(function($templateCache){ $templateCache.put("header.html","<h2>use templateCache</h2>"); }); app2.directive("dir",function($templateCache){return { restrict:"E", template:$templateCache.get("header.html"), replace:true }}); angular.bootstrap($("dir"),['dir']); </script> </body> </html>
对于angular.bootstrap的一点探讨:
1.使用ng-app,页面加载时会这样处理:
angular找到ng-app标记后,首先加载与module相关的directive
创建应用相关的injector(依赖管理器)
开始对ng-app为根节点的DOM“编译”
2、angular.bootstrap方法可以理解为省去查找ng-app的过程,传给bootstrap的参数一个为DOM对象,另一个为模块名数组。
相关文章推荐
- Android的init过程(二):初始化语言(init.rc)解析
- Android 内存泄漏检查工具LeakCanary源碼浅析
- Cordova-Android创建及HelloWorld demo
- Android中消息处理机制-Handler剖析
- 【Unity Shader】概述以及Diffuse shader和unity5新功能Standard shader
- Android使用DrawerLayout和ToolBar实现仿知乎侧滑菜单
- Android中Adapter初步的学习
- Android技巧一:启动屏+新功能左右导航逻辑
- Android Studio——理解Intent和Intent Filter
- Mac Android Studio 快捷键
- swift手记-4
- Android事件分发机制简述
- Android app的文件缓存目录:app的内置Flash私有目录和 外置sdcard目录
- Gradle Android目录结构兼容设置
- zhu的工作日记:volley浅解(android)
- android 人脸检测
- 一个Java写的批量重命名文件小程序
- Unity实现残影效果
- 微信蓝牙开发板体验和开发指引
- Android 自己实现 NavigationView [Design Support Library(1)]