2013-07-03 2 views
19

У меня есть следующий код;AngularJS Uncaught ReferenceError: контроллер не определен из модуля

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', ...); 

Я получаю следующее сообщение об ошибке

Uncaught ReferenceError: SomeControl is not defined from myApp 

ли проблема только, что я не могу использовать app.controller ('SomeControl', ...) синтаксис? при использовании $ routeProvider? это единственный рабочий синтаксис:

function SomeControl(...) 
+2

дубликат: http://stackoverflow.com/questions/11211999/using-angular-controllers-created-with-angular-module-controller –

+0

Благодарности @KarlZilles - Я искал, но не попал вон тот. –

ответ

39

Используйте кавычки:

  controller: 'SomeControl' 
+2

DUH, Спасибо, что нашли мою небольшую ошибку;) –

+0

:) Простая ошибка, чтобы сделать –

6

Как Foo L сказал, вы должны поставить кавычки вокруг SomeControl. Если вы не используете кавычки, вы ссылаетесь на переменную SomeControl, которая не определена, потому что вы не использовали именованную функцию для представления контроллера.

Когда вы используете альтернативу, указанную вами, function SomeControl(...), вы определяете эту именованную функцию. В противном случае Angular должен знать, что он должен искать контроллер в модуле myApp.

Использование синтаксиса app.controller('SomeControl', ...) лучше, потому что оно не загрязняет глобальное пространство имен.

1

Приведенные выше ответы верны, однако, эта ошибка может также произойти:

  1. Если имя контроллера в вас HTML или JSP и т.д. страница не соответствует фактической cotnroller

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

  1. Также, если имя контроллера функции не соответствует определению контроллера, эта ошибка также может произойти.

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

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