2013-11-01 5 views
0

Я пытаюсь в первый раз использовать AngularJS в сочетании с RequireJS с использованием this guide в качестве основы. Насколько я могу сказать после того, как много отладки я загружаю все мои модули в правильном порядке, но когда приложение запускается Угловым выдает ошибку/исключение со следующим сообщением:AngularJS и RequireJS: Нет модуля: myApp

Аргумент «п» является не функция, получил строку из MYAPP

Я видел это сообщение, прежде чем из-за синтаксические ошибки, так что даже если я смотрел корыто код несколько раз я не исключаю возможность простого ошибка синтаксиса. Не делать Fiddle только на тот случай, если это что-то простое, как синтаксическая ошибка, но я, конечно, сделаю это, если потребуется.

Update: Я только что заметил, при установке нг-приложение = "MYAPP" в <html> теге я также получить дополнительную ошибку,

Нет модуля: MYAPP

Update II: Оказывается, это действительно была синтаксическая ошибка в единственном файле, который не указан ниже. Я, хотя по-прежнему остается проблема с обновления I.

RequireJS самонастройки

'use strict'; 
define([ 
    'require', 
    'angular', 
    'app/myApp/app', 
    'app/myApp/routes' 

], function(require, ng) { 
    require(['domReady'], function(domReady) { 
     ng.bootstrap(domReady, ['myApp']); 
    }); 
}); 

app.js

'use strict'; 
define([ 
    'angular', 
    './controllers/index' 
], function(ng) { 
    return ng.module('myApp', [ 
     'myApp.controllers' 
    ]); 
    } 
); 

контроллеры/индекс

'use strict'; 
define([ 
    './front-page-ctrl' 
], function() { 

}); 

контроллеры/модуль

'use strict'; 
define(['angular'], function (ng) { 
    return ng.module('myApp.controllers', []); 
}); 

контроллеры/передний страниц Ctrl

'use strict'; 
define(['./module'], function(controllers) { 
    controllers. 
     controller('FrontPageCtrl', ['$scope', 
      function($scope) { 
       console.log('I\'m alive!'); 
      } 
     ]); 
}); 
+0

Вы не должны изменять свой вопрос после его публикации, поскольку существующие ответы остаются без контекста. Что касается вашей новой проблемы с «Нет модуля», это потому, что вы используете 'ng-app', если не хотите. 'ng.bootstrap' выполняет ту же задачу, что и' ng-app'. Для получения дополнительной информации см. Http://stackoverflow.com/a/17498509/1095616. – Stewie

+0

Да, извините за это. Я понял, что загрузочная часть сразу после обновления. Отметьте свой ответ так, как вы указали мне в правильном направлении. –

ответ

0

RequireJS документы на Dom ready состояние:

Поскольку DOM готова общая потребность приложений , в идеале вложенные функции в API выше cou ld следует избегать. Модуль domReady также реализует API плагинов загрузчика, поэтому вы можете использовать синтаксис загрузчика (обратите внимание на зависимость domReady!), Чтобы заставить функцию обратного вызова require() ждать, пока DOM будет готова до выполнения .domReady возвращает текущий документ при использовании в качестве загрузчика плагина:

Так что, когда вам требуется «domReady» результат является функцией:

function domReady(callback) { 
    if (isPageLoaded) { 
     callback(doc); 
    } else { 
     readyCalls.push(callback); 
    } 
    return domReady; 
} 

Но когда вы добавите domReady строку с ! Подтвердить результат будет фактическим элементом документа:

'use strict'; 
define([ 
    'require', 
    'angular', 
    'app/myApp/app', 
    'app/myApp/routes' 

], function(require, ng) { 
    require(['domReady!'], function(domReady) { 
     // domReady is now a document element 
     ng.bootstrap(domReady, ['myApp']); 
    }); 
}); 
+0

Благодарим вас за ответ. Я частично отдавал себе отчет в том, что вы говорите, но я предполагаю, что я сделал приговор при использовании domReady без завершающего восклицательного знака из-за того, что он не был там в руководстве. Однако ваш ответ делает меня уверенным, что он должен быть там. Однако это не решило проблему, которую я боюсь. –

1

Удалить ng-app = "myApp" из вашего html. Потому что он загружен вручную ng.bootstrap(domReady, ['myApp']);

Смежные вопросы