Ответ 1
Использовать кавычки:
controller: 'SomeControl'
У меня есть следующий код:
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(...)
Использовать кавычки:
controller: 'SomeControl'
Как сказал Foo L, вам нужно поставить кавычки вокруг SomeControl
. Если вы не используете кавычки, вы ссылаетесь на переменную SomeControl
, которая является undefined, потому что вы не использовали именованную функцию для представления контроллера.
Когда вы используете альтернативу, о которой вы упоминали, function SomeControl(...)
, вы определяете эту именованную функцию. В противном случае Angular должен знать, что ему нужно найти контроллер в модуле myApp
.
Использование синтаксиса app.controller('SomeControl', ...)
лучше, потому что оно не загрязняет глобальное пространство имен.
Вышеуказанные ответы правильные, однако эта ошибка также может произойти:
<div ng-controller="yourControllerName as vm">
angular.module('smart.admin.vip')
.controller('yourController', yourController);
function yourController($scope, gridSelections, gridCreationService, adminVipService) {
var vm = this;
activate();