Я пытаюсь иметь угловые и jquery, загруженные с requirejs. Лучшее, что я могу сделать, это то, что в 50% случаев все правильно загружается, а другая половина получается ошибкой No Module: mainApp
Angular + Requirejs - Загрузка не в порядке
Я предполагаю, что это прерывает половину времени, исходя из скорости, на которую requirejs асинхронно загружает скрипты ,
Когда он работает, я вижу тест Hello World (хотя я вижу {{text}} перед его заменой, но я читал, как это исправить здесь). В остальное время я получаю сообщение об ошибке и {{text}} просто остается на экране.
Tree:
index.html
- js
- libs
require.js
- modules
mainApp.js
main.js
main.js
require.config({
paths: {
'jQuery': '//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min',
'angular': '//ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular',
},
shim: {
'angular' : {'exports' : 'angular'},
'jQuery': {'exports' : 'jQuery'}
}
});
require(['jQuery', 'angular', 'modules/mainApp'] , function ($, angular, mainApp) {
$(function() { // using jQuery because it will run this even if DOM load already happened
angular.bootstrap(document, ['mainApp']);
});
});
modules/mainApp.js
define(['angular'], function (angular) {
return angular.module('mainApp' , []).controller('MainCtrl', ['$scope', function ($scope) {
$scope.text = 'Hello World';
}]);
});
Relevant index.html
<head>
<script src="js/libs/require.js" data-main="js/main"></script>
</head>
<body>
<div ng-app="mainApp">
<div ng-controller="MainCtrl">
{{text}}
</div>
</div>
</body>
Кажется, не имеет никакого значения. Я даже попытался как можно точнее сопоставить синтаксис примера блога. Вот проект с рекомендованными вами изменениями: 'https: // github.com/nick-brown/broken-require/tree/domReady /' –
Обратите внимание, что согласно [официальной документации] (http://requirejs.org/ docs/api.html # pageload) вы не используете 'domready', как это; вы либо завершаете код в 'domready()' call, либо требуете его с помощью синтаксиса плагина, то есть '' domReady! ''. Не знаю, достаточно ли этого, чтобы исправить проблему OP. – kryger
@Nick Brown В блоге используется другой скрипт domReady, следовательно, различия в синтаксисе. Я написал этот пост, но забыл, какой скрипт использовался. Не используйте ту, которую предлагает официальная документация. Я отправил запрос на получение запроса. –