7

以下在控制台中返回错误“ReferenceError: ThingCtrl is not defined”

var myApp = angular.module('myApp', []);

myApp.config(['$routeProvider', function($routeProvider) {
$routeProvider.
    when('/things', {templateUrl: 'partial.html', controller: ThingCtrl}).
    when('/things/:id', {templateUrl: 'detail.html', controller: ThingCtrl}).
otherwise({redirectTo: '/things'});
 }]);

myApp.controller('ThingCtrl', ['$scope', '$routeParams', function($scope, $routeParams) {
$scope.thing = [
    {
        'title':'first thing',
        'first':'one',
        'second': 'two',
        'third': 'three'
    }
];

}]);

但是,当控制器定义为:

function ThingCtrl($scope, $routeParams) {
        $scope.thing = [
    {
        'title':'first thing',
        'first':'one',
        'second': 'two',
        'third': 'three'
    }
  ]
};

为什么它不能使用模块化语法?

4

1 回答 1

11

我相信问题出在这里:

when('/things', {templateUrl: 'partial.html', controller: ThingCtrl})

这告诉 Angular 指向 ThingCtrl 对象,该对象未定义并导致错误。

尝试将控制器名称用引号括起来,如下所示:

when('/things', {templateUrl: 'partial.html', controller: 'ThingCtrl'})

这应该允许 Angular 正确使用依赖注入。

于 2013-01-28T15:40:58.473 回答