我有以下代码;
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(...)
答案 0 :(得分:41)
使用引号:
controller: 'SomeControl'
答案 1 :(得分:6)
就像Foo L所说,你需要在SomeControl
附近加上引号。如果不使用引号,则表示变量SomeControl
,这是未定义的,因为您没有使用命名函数来表示控制器。
当您使用您提到的替代方法function SomeControl(...)
时,您可以定义该命名函数。否则,Angular需要知道它需要在myApp
模块中查找控制器。
使用app.controller('SomeControl', ...)
语法更好,因为它不会污染全局命名空间。
答案 2 :(得分:1)
上述答案是正确的,但也可能发生此错误:
<div ng-controller="yourControllerName as vm">
angular.module('smart.admin.vip')
.controller('yourController', yourController);
function yourController($scope, gridSelections, gridCreationService, adminVipService) {
var vm = this;
activate();