Подтвердить что ты не робот

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(...)
4b9b3361

Ответ 1

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

            controller: 'SomeControl'

Ответ 2

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

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

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

Ответ 3

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

  • Если имя контроллера на вашей странице html или jsp etc не соответствует фактическому 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();