"部分模板"错误:参数' MyController'不是一个功能,未定义

时间:2015-04-08 09:17:50

标签: angularjs

我在加载到主html中的部分模板中遇到上述错误。当我将控制器声明为全局它时(MyController1),当我直接在" app.controllers"中声明控制器时。它工作,但当我声明控制器(MyController)作为部分模板的一部分时,出现上述错误。有什么帮助吗?

代码

<div ng-controller='MyController1'>
    <span ng-bind="mydesc"></span>
</div>

<script type="text/javascript">

function MyController1($scope) {
    $scope.mydesc = "Direct Global Definition";
    console.log('in Direct');
}

angular.module('app.controllers').controller('MyController',['$scope',function($scope) {
    $scope.mydesc = "Defined as part of Controller Inline";
}]);

</script>

以上代码有效,但是当我更改ng-controller =&#34; MyController1&#34;到ng-controller =&#34; MyController&#34;,出现错误。

我不想使用全局功能,我无法将每个部分控制器添加到&#34; app.controllers&#34;。

1 个答案:

答案 0 :(得分:0)

看起来,就像你使用angular 1.3版本一样。 在该版本中,根据发行说明禁用了作为控制器的全局功能,但您仍然可以使用它们。您需要做的就是配置控制器提供程序以允许将全局方法用作控制器。 这是完整的工作代码

<div  ng-app="app.controllers" ng-controller="MyController1">
    <span ng-bind="mydesc"></span>
</div>

虽然不建议使用全局方法。

function MyController1($scope) {
  $scope.mydesc = "Direct Global Definition";
}
app = angular.module('app.controllers', []);
app.config(['$controllerProvider', function($controllerProvider) {
     $controllerProvider.allowGlobals();
}]);
app.controller('MyController', ['$scope', function ($scope) {
    $scope.mydesc = "Regular definition";
}]);