Angular.js Controller无法设置属性

时间:2013-04-30 20:44:55

标签: html model-view-controller web angularjs

我正在使用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以避免出现问题所以其他地方不应该出现问题...

1 个答案:

答案 0 :(得分:14)

控制器有一些重载,您可以将代码简化为:

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

  }); 

或者让Angular知道$ scope是这样的:

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

  }]); 

参考:http://docs.angularjs.org/guide/dev_guide.mvc.understanding_controller