2014-09-03 2 views
1

Я не могу использовать TypeScript AMD (RequireJs) и AngularJs.TypScript AMD и AngularJs - Не удалось создать экземпляр модуля

Я хочу использовать AMD для своего кода на машинке, а не для остальных: jquery, angular, bootstrap, ... Для сторонних js Я использую комплектацию MVC, и я хочу продолжить этот путь.

Это мой ThirdParty комплект конфигурации:

bundles.Add(new ScriptBundle("~/bundles/thirdparty").Include(
      "~/Scripts/jquery-{version}.js", 
      "~/Scripts/bootstrap.js", 
      "~/Scripts/respond.js", 
      "~/Scripts/require.js", 
      "~/Scripts/angular.js", 
      "~/Scripts/angular-route.js" 
      )); 

Мои _Layout.cshtml что-то вроде:

<!DOCTYPE html> 
<html ng-app="PafBase"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
    @Scripts.Render("~/bundles/thirdparty") 

    <script> 
     require.config({ 
      baseUrl: 'typescript/' 
     }); 
     require(['module/BaseApplication']); 
    </script> 
</head> 
<body> 
    @RenderBody() 
</body> 

BaseApplication.ts это что-то вроде:

var app: ng.IModule = angular.module('PafBase', ['ngRoute']); // Breakpoint here **** 
app.config(['$routeProvider', ($routeProvider) => { ... }]); 

Когда запустите приложение Я получаю эту ошибку javascript:

[$injector:modulerr] Failed to instantiate module PafBase due to: 

Error: [$injector:nomod] Module 'PafBase' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument. 

Если я продолжу выполнение, я вижу, что BaseApplication.ts выполняется после угловой ошибки.

Я думаю, что это может быть связанно с угловой проверкой объекта DOM после готовности и нашел <html ng-app="PafBase"> затем искать «PafBase» модуль и не найти его из-за requireJs не нагружает BaseApplication.ts до того угловую проверки объекта DOM.

Как выполнить угловое сканирование дома после того, как мой код будет выполнен?

+0

Как сказал грабят. Базовое приложение не загружается, когда приложение ng обнаружено угловым. – basarat

ответ

1

Вы можете вручную загрузочный Угловой, а не указав ng-app="PafBase". Посмотрите на документы здесь: https://docs.angularjs.org/guide/bootstrap

В основном вам просто нужно удалить ng-app из вашего HTML и добавить в свой JS

angular.element(document).ready(function() { 
    angular.bootstrap(document, ['PafBase']); 
}); 
Смежные вопросы