5

我正在使用https://github.com/angular/angular-seed的克隆的克隆来制作一个简单的 Angular.js 应用程序。我正在尝试将一些属性放入控制器中,以便将它们绑定到我的 HTML 中,但不断收到我似乎无法弄清楚的错误消息。

我的 controllers.js 文件目前看起来像这样:

'use strict';

/* Controllers */

angular.module('myApp.controllers', []).
  controller('MyCtrl1', [function($scope) {
    $scope.names = 'bob'
  }])
  .controller('MyCtrl2', [function() {

  }]); 

如果有帮助,这里也是 app.js:

'use strict';

// Declare app level module which depends on filters, and services
angular.module('myApp', ['myApp.filters', 'myApp.services', 'myApp.directives',     'myApp.controllers']).
  config(['$routeProvider', function($routeProvider) {
    $routeProvider.when('/view1', {templateUrl: 'partials/partial1.html', controller:  'MyCtrl1'});
    $routeProvider.when('/view2', {templateUrl: 'partials/partial2.html', controller: 'MyCtrl2'});
    $routeProvider.otherwise({redirectTo: '/view1'});
  }]);

我使用了应用程序“myApp”的默认名称,并且还在我的 HTML 中调用了 ng-view。当 MyCtrl1 正在使用时,我不断收到此错误:

TypeError: Cannot set property 'names' of undefined

这里有什么语法错误吗?我试图只修改 controllers.js 以避免出现问题,所以其他地方不应该有问题......

4

1 回答 1

14

Controllers has a few overloads, you can either simplify your code to this:

angular.module('myApp.controllers', []).
  controller('MyCtrl1', function($scope) {
    $scope.names = 'bob'
  })
  .controller('MyCtrl2', function() {

  }); 

Or let Angular know what $scope is like this:

angular.module('myApp.controllers', []).
  controller('MyCtrl1', ['$scope', function($scope) {
    $scope.names = 'bob'
  }])
  .controller('MyCtrl2', [function() {

  }]); 

Reference: http://docs.angularjs.org/guide/dev_guide.mvc.understanding_controller

于 2013-04-30T21:01:15.623 回答