У меня есть страница, которая использует угловой ui-router для отображения двух видов на одной странице. В конечном счете, мне нужно, чтобы этот прогон под телефонной связью/кордорой, поэтому придется загружать углы в элементы на событии 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>
Выяснил это после нескольких попыток.
Вот что нужно сделать. 1. Сначала необходимо установить маршрутизаторы. 2. Атрибут для ng-app для элемента должен быть установлен следующим. 3. элемент angular.element(element).ready необходимо поймать в бутстрап
Понимание. Если маршрутизаторы не настроены сначала, то процесс начальной загрузки не выполняется (очевидно) Динамическое дополнение ng-app также нуждается в настройке маршрутизатора (интересно, что хром может работать в любом порядке, но мобильному браузеру/опера требуется, чтобы маршрутизатор был настроен первым перед атрибутом ng-app присваивается элементу).
SET ROUTERS ==> ADD ng-app Атрибут элемента ==> Bootstrap
Надеюсь это поможет