Я работаю с AngularAMD, и я пытаюсь "загрузить" угловой модуль.
Вот моя архитектура:
--js
----app.js
----main.js
--lib
----angular.easypiechart.js
----ngload.js
В моем main.js у меня есть этот код:
require.config({
baseUrl: "js",
paths: {
'angular': 'https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular',
'angular-route': 'https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular-route',
'angularAMD': 'https://cdn.jsdelivr.net/angular.amd/0.2/angularAMD.min',
'ngload': '../lib/ngload',
'easypiechart': '../lib/angular.easypiechart'
},
shim: {
'angularAMD': ['angular'],
'angular-route': ['angular'],
'ngload': ['angularAMD'],
'easypiechart': ['angular']
},
deps: ['app']
});
И в моем app.js:
define(['angularAMD', 'angular-route', 'easypiechart'], function (angularAMD) {
'use strict';
var app = angular.module('guess-bg', ['ngRoute']);
// config, etc.
return angularAMD.bootstrap(app);
});
Но 'easypiechart'
терпит неудачу, и я получаю ошибку. Cannot read property 'module' of undefined
Я не понимаю, потому что использовал "угловой" в прокладке для easypiechart.
Я пробовал много вещей, таких как
define(['angularAMD', 'angular-route', 'ngload!easypiechart']
Или
var app = angular.module('guess-bg', ['ngRoute', 'easypiechart']);
Но продолжайте получать ошибки. Это очень мрачно для меня, и я даже не понимаю, как работает этот "ngload". angular-route
прочим, у меня не было проблем с angular-route
.
Во всяком случае, я не знаю, как просто загрузить этот модуль, и это действительно раздражает...
Не могли бы вы рассказать мне, что мне не хватает?
Я даже не понимаю, как работает этот "ngload"
Вам не нужно ngload
если вы хотите загрузить модуль непосредственно в свой первый модуль requireJS. В основном это используется для ленивого модуля загрузки для вашего приложения, например, в /some/random/route/
вы хотите использовать угловой модуль, но только хотите, чтобы он был загружен здесь. ngload
сделает трюк.
Но "easypiechart" терпит неудачу, и я получаю ошибку. Не могу прочитать модуль "свойства" неопределенного
В app.js
попытайтесь удалить 'use strict';
:
define(['angularAMD', 'angular-route', 'easypiechart'], function (angularAMD) {
var app = angular.module('guess-bg', ['ngRoute', 'easypiechart']);
// config, etc.
return angularAMD.bootstrap(app);
});
Это может быть вызвано тем, что вы включите strict
режим. Таким образом, браузер обнаружил, что angular
объект не определен нигде в app.js
поэтому вы получили ошибку Cannot read property 'module' of undefined
.
Другими словами, angular
объект определяется и доступен глобально. Но поскольку вы находитесь в строгом режиме, браузер отказывается использовать такую глобальную переменную. Если вы все еще хотите использовать строгий режим. window.angular
этого используйте window.angular
:
define(['angularAMD', 'angular-route', 'easypiechart'], function (angularAMD) {
'use strict';
var app = window.angular.module('guess-bg', ['ngRoute', 'easypiechart']);
// config, etc.
return angularAMD.bootstrap(app);
});
'Cannot read property 'module' of undefined'
? Это из вашегоapp.js
или изangular.easypiechart.js
?