【问题标题】:Creating new controller in angular, error argument is not a function以角度创建新控制器,错误参数不是函数
【发布时间】:2013-12-26 10:15:17
【问题描述】:

首先对不起我的英语。

我刚开始使用 MEAN(mongo, express, angular, node) 的角度,但我遇到了问题。

当我创建一些简单的控制器时,我总是会出错

 Argument 'testctrl' is not a function, got undefined

我已经搜索并尝试了几乎所有关于 stackoverflow 的建议,但没有一个有帮助:(

这是我的testctrl

angular.module('mean.system').controller('testctrl', ['$scope', 'Global', function ($scope, Global) {
$scope.global = Global;
$scope.count = 4;
}]);

并查看 index.html

<section data-ng-controller="IndexController">
<h1>This is the home view</h1>
    <div data-ng-controller="testctrl">{{count}}</div>
</section>

我正在使用带有工作视图的工作控制器“IndexController”。

我不知道我做错了什么。

编辑:

我找到了! 我的问题很简单,我没有将控制器文件附加到正文。 我的意思是,我应该添加

<script type="text/javascript" src="[controller_path]"></script>

这足以正常工作。

希望这也对某人有所帮助。

【问题讨论】:

  • module('mean.system') - 应用程序模块名称是否可能有其他名称?如果是 - 检查您是否将模块“mean.system”指定为主模块的依赖项。
  • @kostik 说了什么。也许您也可以包含设置 ng-app 的 HTML 部分?
  • 模块名称正确,因为其他控制器工作正常。仅当我尝试添加新控制器时才会发生这种情况。编辑:ng-app 是由这个框架生成的。

标签: node.js mongodb angularjs express controller


【解决方案1】:

您的代码看起来不错,我发布到 Fiddle 并没有收到跟随错误。无论如何,我添加了虚拟服务来模拟您的代码。我会玩 Angular 版本。在 1.0.2 和 1.1.1 上测试

angular.module('mean.system', [])
.controller('testctrl', ['$scope', 'Global', function ($scope, Global) {
    $scope.global = Global;
    $scope.count = 4;
}])
.factory("Global", function () { // dummy service
  var number = 1;
  return number;
});



function IndexController($scope, Global) {
        $scope.Global = Global;
}

【讨论】:

  • 也许你可以尝试从github.com/linnovate/mean 下载这个框架,然后尝试创建新的控制器并帮助我?当然,如果你有时间:) 会很友善
  • 这会有问题,因为我不在办公室,我需要 VPN。但是,由于此演示正在运行,请尝试与您的环境进行比较。祝你好运
【解决方案2】:

我遇到了同样的问题,然后我意识到你必须将脚本添加到 footer.jade,回想起来似乎很明显。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多