为什么我在简单的angularjs程序中得到这个错误?

时间:2015-03-22 13:10:22

标签: javascript angularjs

我收到此错误,

Argument 'ctrl1' is not a function, got undefined

运行最新的angularjs v1.3.15。 我的语法应该有什么不同吗?

这是html

<body ng-app="app">

  <div ng-controller="ctrl1">

      {{color}}

      {{root_color}}

  </div>

  <div ng-controller="ctrl2">

      {{color}}

      {{root_color}}

  </div>

  </body>

这是angularjs代码

   angular.module('app', []).controller('ctrl1', ['$scope', function ctrl1($scope){

    $scope.color = "yellow";
    $scope.root_color = "red";

   }]);



   angular.module('app', []).controller('ctrl2', ['$scope', function ctrl2($scope){

    $scope.color = "yellow";
    $scope.root_color = "red";

   }]);

2 个答案:

答案 0 :(得分:2)

你用第二个控制器覆盖了第一个控制器。使用

var app=angular.module('app', []);
//1st controller
app.controller('ctrl1', function ctrl1($scope){

$scope.color = "yellow";
$scope.root_color = "red";

});
//2nd controller
app.controller('ctrl2', function ctrl2($scope){

$scope.color = "yellow";
$scope.root_color = "red";

});

答案 1 :(得分:1)

您正在应用中定义控制器ctrl1,然后再次使用ctrl2重新定义相同的应用,这正在刷新最初定义的控制器ctrl1

在角度方面,当ng-controller指令被编译时,它不会获得名为ctrl1的控制器,因此第二次注册第二个控制器时,您应该只使用类似angular.module('app')的模块名称angular.module('app', [])

<强>代码

angular.module('app', []).controller('ctrl1', ['$scope',
    function ctrl1($scope) {
        $scope.color = "yellow";
        $scope.root_color = "red";
    }
]);

angular.module('app').controller('ctrl2', ['$scope',
    function ctrl2($scope) {
        $scope.color = "yellow";
        $scope.root_color = "red";
    }
]);

希望这可以帮助你,谢谢。