Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs ui路由器事件_Angularjs_Angular Ui Router - Fatal编程技术网

Angularjs ui路由器事件

Angularjs ui路由器事件,angularjs,angular-ui-router,Angularjs,Angular Ui Router,我有一个页面,它使用angular ui router在同一页面上呈现两个视图。 我最终需要在phonegap/cordova下运行此程序,因此必须在deviceready事件中引导元素 我设法将代码封装到一个函数中,当在页面末尾调用该函数时,它工作正常 但是,当在window.onload或document ready事件上调用相同的函数时,它将无法工作。事实上,如果在页面加载后从javascript控制台本身调用该函数,它将无法工作 需要帮助找出到底出了什么问题 代码如下 <html&

我有一个页面,它使用angular ui router在同一页面上呈现两个视图。 我最终需要在phonegap/cordova下运行此程序,因此必须在deviceready事件中引导元素

我设法将代码封装到一个函数中,当在页面末尾调用该函数时,它工作正常

但是,当在window.onload或document ready事件上调用相同的函数时,它将无法工作。事实上,如果在页面加载后从javascript控制台本身调用该函数,它将无法工作

需要帮助找出到底出了什么问题

代码如下

<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

希望这有帮助