2013-07-03 9 views
19

Ich habe den folgenden Code;AngularJS Uncaught ReferenceError: Controller ist nicht definiert von Modul

var app = 
    angular. 
     module("myApp",[]). 
     config(function($routeProvider, $locationProvider) { 
      $routeProvider.when('/someplace', { 
       templateUrl: 'sometemplate.html', 
       controller: SomeControl 
      }); 
      // configure html5 to get links working on jsfiddle 
      $locationProvider.html5Mode(true); 
     }); 

app.controller('SomeControl', ...); 

Ich erhalte die folgenden Fehler

Uncaught ReferenceError: SomeControl is not defined from myApp 

Ist das Problem nur, dass ich nicht app.controller verwenden kann ('SomeControl', ...) Syntax? bei Verwendung von $ routeProvider? ist die einzige Arbeits Syntax:

function SomeControl(...) 
+2

Duplikat: http://stackoverflow.com/questions/11211999/using-angular-controllers-created-with-angular-module-controller –

+0

Dank @KarlZilles - ich gesucht, aber verpasst Das hier. –

Antwort

39

Verwenden Zitate:

  controller: 'SomeControl' 
+2

DUH, Danke das du meinen kleinen Fehler gefunden hast;) –

+0

:) Einfacher Fehler zu machen –

6

wie Foo L sagte, müssen Sie Anführungszeichen um SomeControl zu setzen. Wenn Sie keine Anführungszeichen verwenden, beziehen Sie sich auf die Variable SomeControl, die nicht definiert ist, weil Sie keine benannte Funktion zur Darstellung des Controllers verwendet haben.

Wenn Sie die von Ihnen erwähnte Alternative function SomeControl(...) verwenden, definieren Sie diese benannte Funktion. Andernfalls muss Angular wissen, dass es den Controller im Modul myApp nachschlagen muss.

Verwenden Sie die app.controller('SomeControl', ...) Syntax ist besser, weil es den globalen Namespace nicht verschmutzt.

1

Die oben genannten Antworten sind aber richtig, dieser Fehler auch passieren kann:

  1. Wenn der Name des Controllers in Ihnen HTML oder jsp etc Seite die tatsächlichen cotnroller nicht

<div ng-controller="yourControllerName as vm">

passend
  1. Auch wenn der Name des Funktionscontrollers nicht mit der Controllerdefinition übereinstimmt, kann dieser Fehler ebenfalls auftreten.

angular.module('smart.admin.vip') .controller('yourController', yourController); function yourController($scope, gridSelections, gridCreationService, adminVipService) { var vm = this; activate();

Verwandte Themen