Запустите angular.js в качестве обратного вызова (например, $.ajax)
Я пишу приложение в основном с двумя javascripts, resources_loader.js и app.js, где первый загружает некоторые файлы json, используемые app.js.
Проблема в том, что app.js (в котором есть angular.js) должен запускаться только после resources_loader.js. Я пытался запустить угловой код внутри обратного вызова успеха (resources_loader содержит отложенный), но это, кажется, не работает хорошо. Вот мой index.html:
<!doctype html>
<html ng-app="myapp">
<body>
<script src="angular.js"></script>
<script src="resources_loader.js"></script>
</body>
</html>
Учтите, что я переместил app.js в resources_loader внутри обратного вызова success. Каждый раз, когда я пытаюсь запустить его, angular вызывает следующее исключение: Uncaught Error: No module: myapp
,
Я думаю, что angular.module('myapp', [])
должен запускаться до события onload, что здесь не так.
Другое дело, что я хочу использовать yepnope.js в своем проекте следующим образом:
<script "yepnope.js"></script>
<script "resources_loader.js"></script>
<script>
var loader = load_stuff();
yepnope({
test: loader.resolved(),
yep: ['angular.js', 'app.js', 'foo.js', 'bar.js'],
nope: ['fail.js']
});
</script>
app.js
содержит угловой код. Я думаю, что он более производительный, потому что он загружается только под углом, если загружены ресурсы. Но как я могу это сделать?
1 ответ
Удалить ng-app
от <html>
пометить и использовать angular.bootstrap(document, ['myapp']);
запустить его, когда ваши ресурсы загружены, вот так:
var app = angular.module('myapp', []);
app.config(['$routeProvider', '$locationProvider', function($router, $location) {
$location.html5Mode(true);
$router
.when('/', {
templateUrl: 'some_template.html',
controller: 'myController'
});
}]);
// and then, after everything, run
angular.bootstrap(document, ['myapp']);