2017-02-20 14 views
0

Я получаю эту ошибку - Ошибка: $ controller: ctrlreg Контроллер с этим именем не зарегистрирован. Все мои скрипты загружены, и я добавил их все в index.html.Угловой контроллер не зарегистрирован на веб-службе XAMPP

All scripts are loaded

Мой контроллер:

(function() { 
    angular.module("nsoftModule").controller("nsoftController", ["nsoftService", function(nsoftService) { 
     var self = this; 
     self.service = nsoftService; 
    }]) 
})(); 

Моя директива:

(function() { 
    var weatherMod = angular.module("nsoftModule", []); 
    weatherMod.directive("nsoftDirective", function() { 
     return { 
      templateUrl: "Template/weatherTemplate.html", 
      controller: "nsoftController as nsoftCtrl" 
     } 
    }); 
})(); 

Моя служба:

(function() { 
    var weatherMod = angular.module("nsoftModule", []); 
    weatherMod.service("nsoftService", ["http", function(http) { 
     var service = this; 
    }]); 
})(); 

Мой модуль:

(function() { 
    var weatherMod = angular.module("nsoftModule", []); 
})(); 

Мой шаблон:

<div class="container"> 
    <div ng-controller="nsoftController"> 
     <p>Name : <input type="text" ng-model="name"></p> 
     <h1>Hello {{name}}</h1> 
    </div> 
</div> 

Мои app.js:

(function() { 
    angular.module("nsoftApp", ["nsoftModule"]); 
})(); 

И мой index.html:

<!DOCTYPE html> 
<html ng-app="nsoftApp"> 
    <head> 
     <title>Nsoft App</title> 
    </head> 
    <body> 
     <nsoft-directive></nsoft-directive> 
     <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.1/angular.min.js"></script> 
     <script src="weatherModule.js"></script> 
     <script src="Service/weatherService.js"></script> 
     <script src="Controller/weatherController.js"></script> 
     <script src="Directive/weatherDirective.js"></script> 
     <script src="app.js"></script> 
    </body> 
</html> 

ответ

0

просто удалить глобальную переменную, потому что в вас используют анонимную функцию self invoking, ограничиваясь только одна анонимная функция. использовать как его

(function() { 
    angular.module("nsoftModule").controller("nsoftController", ["nsoftService", function(nsoftService) { 
     var self = this; 
     self.service = nsoftService; 
    }]) 
})(); 

(function() { 
    angular.module("nsoftModule").directive("nsoftDirective", function() { 
     return { 
      templateUrl: "Template/weatherTemplate.html", 
      controller: "nsoftController as nsoftCtrl" 
     } 
    }); 
})(); 

//change http to $http 
(function() { 
    angular.module("nsoftModule").service("nsoftService", ["$http", function($http) { 
     var service = this; 
    }]); 
})(); 

(function() { 
    angular.module("nsoftModule", []); 
})(); 

поскольку контроллер правопреемника от директивы нет необходимости объявлять его в HTML также

<div class="container"> 
<div > 
    <p>Name : <input type="text" ng-model="nsoftCtrl.name"></p> 
    <h1>Hello {{nsoftCtrl.name}}</h1> 
</div> 

(function() { 
    angular.module("nsoftApp", ["nsoftModule"]); 
})(); 
+0

Большое спасибо за ваш ответ Sachila, но я все еще получаю ту же ошибку, даже с вашим улучшения ... –

+0

проверить это. я обновлю ответ https://plnkr.co/edit/9d64fOb9QhNgCeKl90VY?p=preview –

+0

Чем вы очень, это работает, потрясающе !!! –