2015-06-24 5 views
1

Я пытаюсь использовать Type Script + Angular Js.I объявил мой контроллер и интерфейсы. Но когда я пытаюсь запустить свою систему, и ошибка

Uncaught Error: [$injector:modulerr] Failed to instantiate module .

Я прочитал все, но не в состоянии получить Whats точная проблема заключается в: - я упомянул мой код ниже: -

My View Page

 <html> 
<head> 
    <script src="http://code.jquery.com/jquery-latest.js"></script> 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"> </script> 
    <dnn:DnnJsInclude runat="server" FilePath="~/DesktopModules/Customer.New/Scripts/angular.js" /> 
    <dnn:DnnJsInclude runat="server" FilePath="~/DesktopModules/Customer.New/Scripts/angular.min.js" /> 
    <dnn:DnnJsInclude runat="server" FilePath="~/DesktopModules/Customer.New/app/app.routes.js" /> 
    <dnn:DnnJsInclude runat="server" FilePath="~/DesktopModules/Customer.New/app/app.module.js" /> 
    <dnn:DnnJsInclude runat="server" FilePath="~/DesktopModules/Customer.New/app/Controller/CreateCustomerController.js" /> 
    <dnn:DnnJsInclude runat="server" FilePath="~/DesktopModules/Customer.New/app/Interface/Interface.js" /> 

    <title>Create Customer</title> 

</head> 
<body> 
    <div data-ng-app=" CustomerNew"> 
     <div id="page" style="width:90% ! important;" data-ng-controller="CreateCustomerCtrl as custom"> 

Please See Exception Here

+0

Можете ли вы разместить полное сообщение об исключении? – masimplo

+0

@ mxa055 опубликовали завершенное исключение ... –

ответ

1

Я решил эту ошибку, сделав изменения в объявлении моего ng-приложения, поскольку я объявил свое ng-приложение перед тегом формы, но теперь я ввел изменения и удалил div, объявленный перед тегами формы, и применил это как: -

<html> 
<head> 
    <script src="http://code.jquery.com/jquery-latest.js"></script> 

    <dnn:DnnJsInclude runat="server" FilePath="/Scripts/angular.js" /> 
    <dnn:DnnJsInclude runat="server" FilePath="/app/app.routes.js" /> 
    <dnn:DnnJsInclude runat="server" FilePath="/app/app.module.js" /> 
    <dnn:DnnJsInclude runat="server" FilePath="app/Controller/CreateCustomerController.js" /> 
    <dnn:DnnJsInclude runat="server" FilePath="/app/Interface/Interface.js" /> 

    <title>Create Customer</title> 
</head> 
<body> 
     <form data-ng-app="CustomerNew" data-ng-controller="CreateCustomerCtrl as custom" name="form" class="css-form" novalidate > 
3

Реальная проблема (не уверен, если только) является то, что мы прячем/переопределить определение модуля. После того, как мы делаем:

var app = angular.module("CustomerNew", ['ngRoute']); 

и следующая/ранее

var CreateCustomerapp = angular.module("CustomerNew", []); 

мы можем/должны определить модуль только один раз, а затем задать только для него с помощью добытчика:

// firstly create 
var app = angular.module("CustomerNew", ['ngRoute']); 
... 
// later get it 
// var CreateCustomerapp = angular.module("CustomerNew", []); // setter 
var CreateCustomerapp = angular.module("CustomerNew"); // getter 
+1

Хороший улов, даже не видел его там: D – masimplo

+0

@Radim Kohler это означает, что мне нужно внести изменения в мой контроллер как var CreateCustomerapp = angular.module ("CustomerNew ", ['ngRoute']); Справа? –

+0

Я бы сказал ДА. Модуль должен быть загружен первым .. создать модуль ... Контроллер JS должен просто попросить модуль и расширить его .. надеюсь, что это поможет ... –

1

Другой вопрос мог бы/был бы заказать скриптов, загружающих на страницу. Это ток (не работает):

<head> 
    <script src="http://code.jquery.com/jquery-latest.js"></script> 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js" ></script>  
    // angular is not in play yet here 
    <dnn:DnnJsInclude runat="server" FilePath="/app/app.module.js" /> 
    <dnn:DnnJsInclude runat="server" FilePath="/app/Controller/CreateCustomerController.js" /> 
    <dnn:DnnJsInclude runat="server" FilePath="/app/Interface/Interface.js" /> 
    // too late.... 
    <dnn:DnnJsInclude runat="server" FilePath="/Scrpts/angular.js" /> 
    <dnn:DnnJsInclude runat="server" FilePath="/Scrpts/angular.min.js" /> 
    <dnn:DnnJsInclude runat="server" FilePath="/app/app.routes.js" /> 
    ... 

Мы должны использовать этот порядок определения:

<head> 
    <script src="http://code.jquery.com/jquery-latest.js"></script> 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js" ></script>  


    // ANGULAR First 
    <dnn:DnnJsInclude runat="server" FilePath="/Scrpts/angular.js" /> 
    <dnn:DnnJsInclude runat="server" FilePath="/Scrpts/angular.min.js" /> 
    <dnn:DnnJsInclude runat="server" FilePath="/app/app.routes.js" /> 

    // angular is now ready to start solve app 
    <dnn:DnnJsInclude runat="server" FilePath="/app/app.module.js" /> 
    <dnn:DnnJsInclude runat="server" FilePath="/app/Controller/CreateCustomerController.js" /> 
    <dnn:DnnJsInclude runat="server" FilePath="/app/Interface/Interface.js" /> 
    ... 

После обновления ... есть 3 раза определенные угловые:

<head> 
    <script src="http://code.jquery.com/jquery-latest.js"></script> 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"> </script> 
    <dnn:DnnJsInclude runat="server" FilePath="~/DesktopModules/Customer.New/Scripts/angular.js" /> 
    <dnn:DnnJsInclude runat="server" FilePath="~/DesktopModules/Customer.New/Scripts/angular.min.js" /> 
    <dnn:DnnJsInclude runat="server" FilePath="~/DesktopModules/Customer.New/app/app.routes.js" /> 
    <dnn:DnnJsInclude runat="server" FilePath="~/DesktopModules/Customer.New/app/app.module.js" /> 
    ... 

это нехорошо (возможно, работает, но не хорошо) должно быть только один раз

<head> 
    <script src="http://code.jquery.com/jquery-latest.js"></script> 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"> </script> 
    // just once 
    <dnn:DnnJsInclude runat="server" FilePath="~/DesktopModules/Customer.New/app/app.routes.js" /> 
    <dnn:DnnJsInclude runat="server" FilePath="~/DesktopModules/Customer.New/app/app.module.js" /> 
    ... 

Весь код сейчас должен быть загружен в правильном порядке. Но так как он бросает ошибку ... другие проблемы, я могу видеть это содержание Module.js

// this is typescript 
((): void=> { 
    var app = angular.module("CustomerNew", ['ngRoute']); 
    app.config(CustomerNew.Routes.configureRoutes); 
})() 

, который должен быть составлен:

(function() { 
    var app = angular.module("CustomerNew", ['ngRoute']); 
    app.config(CustomerNew.Routes.configureRoutes); 
})(); 

И ОСНОВНОМ, нам нужно UI-Router, не ngRoute:

(function() { 
    var app = angular.module("CustomerNew", ['ui.router']); 
    app.config(CustomerNew.Routes.configureRoutes); 
})(); 

The ui.rou ter 'должен быть введен в основной модуль. Проверить that example ...со всеми действительно запущенными

+0

Kohler я пробовал то же самое, но он производит больше ошибок углового, и не потому, что, поскольку у меня были мои предыдущие вопросы, текущий заказ был предоставлен вами только и он отлично работает. избавиться от него? –

+0

Тот факт, что он производит больше ошибок, не означает, что мое предложение неверно. Mico, пожалуйста, перепроверьте этот ответ: http://stackoverflow.com/a/30590960/1679310 - как вы могли видеть - это '