Angularjs ui路由器事件
我有一个页面,它使用angular ui router在同一页面上呈现两个视图。 我最终需要在phonegap/cordova下运行此程序,因此必须在deviceready事件中引导元素 我设法将代码封装到一个函数中,当在页面末尾调用该函数时,它工作正常 但是,当在window.onload或document ready事件上调用相同的函数时,它将无法工作。事实上,如果在页面加载后从javascript控制台本身调用该函数,它将无法工作 需要帮助找出到底出了什么问题 代码如下Angularjs ui路由器事件,angularjs,angular-ui-router,Angularjs,Angular Ui Router,我有一个页面,它使用angular ui router在同一页面上呈现两个视图。 我最终需要在phonegap/cordova下运行此程序,因此必须在deviceready事件中引导元素 我设法将代码封装到一个函数中,当在页面末尾调用该函数时,它工作正常 但是,当在window.onload或document ready事件上调用相同的函数时,它将无法工作。事实上,如果在页面加载后从javascript控制台本身调用该函数,它将无法工作 需要帮助找出到底出了什么问题 代码如下 <html&
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
<script src="js/jquery-2.1.4.min.js"></script>
<script src="js/angular.js"></script>
<script src="js/angular-ui-router.min.js"></script>
<script>
</script>
</head>
<body>
<div ui-view="appview"> appview </div>
<div ui-view="msgview"> messageview s</div>
<script>
var routerApp;
var appViews = ['appview','msgview'];
function zero()
{
routerApp= angular.module('routerApp', ['ui.router']);
x=$("body").attr("ng-app","routerApp");
for(var i=0;i<appViews.length;i++)
{
angular.bootstrap($("#" + appViews[i]), ["routerApp"]);
}
routerApp.config(function($stateProvider, $urlRouterProvider)
{
$urlRouterProvider.otherwise('/messaging');
$stateProvider
.state('messaging',
{
url: '/messaging',
views:
{
'':{templateUrl:'http://geo.tikoo.com/app/components/messaging/phone/messaging.html'},
'msgview':
{
templateUrl: 'http://geo.tikoo.com/app/components/messaging/phone/messaging.html',
controller: 'messC'
}
}
});
});
routerApp.controller('messC', function($scope) {
$scope.username = 'Tom';
});
}
zero();
//window.onload=zero;
//$(document).ready(function(){zero();});
</script>
</body>
</html>
appview
messageview s
var-routerApp;
var-appViews=['appview','msgview'];
函数零()
{
routerApp=angular.module('routerApp',['ui.router']);
x=$(“body”).attr(“ng应用程序”、“routerApp”);
对于(var i=0;i来说,我在几次尝试后就找到了答案
下面是需要做的。
1.需要先设置路由器。
2.接下来需要设置元素上ng app的属性。
3.需要捕获angular.element(element).ready事件以进行引导
理解。
如果没有首先设置路由器,则引导失败(显而易见)
ng应用程序动态添加还需要路由器设置(有趣的是,chrome可以以任何顺序工作,但移动浏览器/opera需要在将属性ng应用程序分配给元素之前先设置路由器)
设置路由器==>将ng应用程序属性添加到元素==>Bootstrap
希望这有帮助