【问题标题】:Error: [ng:areq] Argument 'TasksCtrl' is not a function, got undefined错误:[ng:areq] 参数“TasksCtrl”不是函数,未定义
【发布时间】:2015-11-18 07:47:01
【问题描述】:

我开始收到错误消息,但不知道出了什么问题。我错过了什么吗?

js

var app = angular.module('Todolist', []);

app.controller('TasksCtrl', [
  '$scope', function($scope) {
    $scope.tasks = Task.query({
      status: 'incompleted'
    });

   $scope.completed_tasks = Task.query({
     status: 'completed'
    });

 }
]);

html

<div ng-controller='TasksCtrl' class='tasks-container'>
</div>

【问题讨论】:

  • 你的代码没有明显的问题。可以显示Task服务的代码吗
  • @Satpal no..他错过了添加Task服务实例
  • @PankajParkar,同意,但在那种情况下,Task 将是undefined 而不是TasksCtrl,OP 可能正在重新定义模块。
  • @Satpal 是的..我认为您确定了正确的问题..他必须两次初始化应用程序
  • @PankajParkar 是的。他是对的。我创建了两个js文件,但是它们的模块名称不同。

标签: javascript angularjs angularjs-controller angularjs-module


【解决方案1】:

您应该在控制器中使用 Task 服务依赖项。

控制器

app.controller('TasksCtrl', [
  '$scope', 'Task', function($scope, Task) {
    $scope.tasks = Task.query({
      status: 'incompleted'
    });

   $scope.completed_tasks = Task.query({
     status: 'completed'
    });

 }
]);

我假设您已经在某个地方定义了Task 服务,如果没有,那么您应该将它添加到您的代码中。

编辑

虽然我添加了一个可以解决其他问题的答案。我认为您在定义服务时已经在代码中两次声明了您的应用程序。那时,最初分配的控制器会从模块中刷新,您会收到 Error: [ng:areq] Argument 'TasksCtrl' is not a function 错误

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-18
    • 2015-11-03
    • 2016-10-23
    • 2015-10-10
    • 2016-11-12
    • 2016-03-04
    • 2015-07-27
    相关资源
    最近更新 更多