Javascript AngularJS控制器不是函数,未定义(来自工厂的数据)

Javascript AngularJS控制器不是函数,未定义(来自工厂的数据),javascript,angularjs,angularjs-controller,angularjs-factory,Javascript,Angularjs,Angularjs Controller,Angularjs Factory,我正在重构一个旧的AngularJS项目,这样它就不那么愚蠢和糟糕了,将控制器分离并用工厂导出数据,而不是将所有数据放在一个巨大的控制器中。不幸的是,我走不了多远,因为我的主控制器坏了。我搜索了这么多,没有一个问题与我的问题相匹配。我还让一位高级开发人员运行了它,但他找不到问题。非常感谢您的帮助。在我进行重构之前,这个应用程序确实可以工作 My index.html: <!DOCTYPE html> <html ng-app="campSpots"> <head&g

我正在重构一个旧的AngularJS项目,这样它就不那么愚蠢和糟糕了,将控制器分离并用工厂导出数据,而不是将所有数据放在一个巨大的控制器中。不幸的是,我走不了多远,因为我的主控制器坏了。我搜索了这么多,没有一个问题与我的问题相匹配。我还让一位高级开发人员运行了它,但他找不到问题。非常感谢您的帮助。在我进行重构之前,这个应用程序确实可以工作

My index.html:

<!DOCTYPE html>
<html ng-app="campSpots">
<head>
<meta charset="utf-8">
<title>Camp Spots</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.2/css/bootstrap.min.css" integrity="sha384-y3tfxAZXuh4HwSYylfB+J125MxIs6mR5FOHamPBG064zB+AFeWH94NdvaCBm8qnd" crossorigin="anonymous">
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body ng-controller="mainCtrl">

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.js"></script>
<script type="text/javascript" src="js/app.js"></script>
<script type="text/javascript" src="components/main.ctrl.js"></script>
</body>
</html>
和我的控制器main.ctrl.js:

(function(){
"use strict";
angular
   .module("campSpots")
      .controller("mainCtrl", mainCtrl);

      mainCtrl.$inject = ['$scope', '$http', 'postFactory'];

      function mainCtrl($scope, $http, postFactory){
    postFactory.getPosts().then(function(posts){
      $scope.posts = posts.data;
    })
  }
})

您忽略了在中为控制器和工厂调用函数

它们应该是这样的:

(function(){
    ///code
}());

您的代码中缺少最后一个
()
,因此它实际上没有运行代码块。

此错误意味着angular找不到控制器。对于初学者,请检查
index.html
是否包含包含控制器的脚本,并检查您是否在路由配置和/或
ng controller
definition.FYI中使用了确切的控制器名称,
(function(){})(
)和
(function(){}())
两者的工作方式相同。没有必要编辑它。@HarrisWeinstein,是的!我注意到刚编辑完:):)我太习惯使用这种风格(道格拉斯·克罗克福德的风格),以至于我开始相信另一种方式是不正确的。谢谢你的澄清。还有其他选择。干杯很好,我不知道其他的方法。
(function(){
    ///code
}());