Angular,动态获取应用或模块名
Angular, get app or module name dynamically
我们在Angular中开发了一个SPA,我想在路由器发生变化时触发我的分析代码,所以我希望能够获得应用名或模块名。下面是我试图使用的代码,但我得到错误为"ReferenceError: testApp未定义(…)"。
function getAllElementsWithAttribute(attribute)
{
var matchingElements = [];
var allElements = document.getElementsByTagName('*');
for (var i = 0, n = allElements.length; i < n; i++)
{
if (allElements[i].getAttribute(attribute) !== null)
{
// Element exists with attribute. Add to array.
matchingElements.push(allElements[i].getAttribute(attribute));
}
}
return matchingElements[0];
}
if(window.angular != undefined || window.angular != null){
console.log("Angular lOADED");
//var modName = angular.modules[0];
var modName = getAllElementsWithAttribute("ng-app");
try{
var myMod = typeof(eval(modName));
console.log(myMod);
}catch(e){
console.log(e);
}
myMod.run(function($rootScope, $location) {
console.log($routeScope)
$rootScope.$on('$routeChangeSuccess', function () {
if(true){
loadTag($location);
}
});
});
function loadTag(location){
console.log(location);
console.log("Tag Loaded");
}
}
你可以在路由配置中这样定义"names":
.state('dummy', {
url: '/dummy',
templateUrl: 'app/dummy.html',
controller: 'DummyController',
MyModuleOrTag: 'dummyTAg'
})
你可以得到这样:
$state.current.MyModuleOrTag
我想这样查找每个元素会更快
相关文章:
- Node.js正在更改应用程序以使用集群模块
- 错误:$injector:modulerr模块错误(我的第一个SPA应用程序)
- 使用Ampersand.js路由模块化应用程序
- 将broccoliJS与当前使用requireJS的模块化主干应用程序结合使用,我想完全放弃requireJS
- 使用Q节点模块时,Bluemix node.js应用程序部署失败
- 为具有核心模块和子模块的应用程序构建Webpack
- 构建模块化谷歌地图应用程序
- 模块化与性能与性能与角度应用程序中的ng-include
- 无法模块化AngularJS应用程序
- 将迁移的Silverlight到HTML应用程序划分为NPM模块
- 如何让我的ember.js应用程序导入从bower或npm安装的模块
- 如何将JavaScript模块添加到生成器meanjs应用程序中
- RequireJS:将插件动态应用于模块id
- Javascript应用程序作为具有外部依赖关系的AMD模块
- $injector:modulerr将自定义模块注入Angular应用程序
- 网络应用程序:模块之间相互交流
- 将登录验证模块与现有的Angular JS应用程序集成
- 如何在node.js控制台应用程序中应用模块模式
- 如何将一个没有模块的js应用程序迁移到commonJs模块
- $injector:nomod模块“应用程序”不可用!仅限火狐浏览器