javascript - AngularJS Controller 不是一个函数,未定义(来自工厂的数据)

标签 javascript angularjs angularjs-controller angularjs-factory

我正在重构一个旧的 AngularJS 项目,这样它就不那么愚蠢和糟糕了,分离 Controller 并使用工厂导出数据,而不是将所有数据放在一个巨大的 Controller 中。不幸的是,我无法走得太远,因为我的主 Controller 无法工作。我进行了广泛的搜索,但我看到的问题没有一个与我的相符。我还让一位高级开发人员运行了它,他找不到问题。任何帮助深表感谢。在我进行重构之前,该应用程序确实可以运行。

我的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>

我的工厂:

(function(){
"use strict";
  angular
   .module("campSpots")
   .factory("postFactory", function($http){
    function getPosts(){
    return $http.get('data/posts.json');
  };
  return {
    getPosts: getPosts
  };
 })
})

还有我的 Controller ,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;
    })
  }
})

最佳答案

您忽略了调用 IIFE 中的函数对于 Controller 和工厂。

它们应该是这样的:

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

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

关于javascript - AngularJS Controller 不是一个函数,未定义(来自工厂的数据),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42698824/

相关文章:

javascript - Snap SVG 拖动和缩放 : My rectangle won't stop scaling?

javascript - 在后面的代码中返回 "full"clientID (asp.net VB)

javascript - 我可以将外部 javascript 文件链接到 AngularJS Controller 吗?

javascript - AngularJS - 在 Controller 中使用模型导致模型更新

javascript - 如何从另一个 Controller 调用一个 Controller 的功能

javascript - 使用 Express 的 Nuxt 应用程序不允许在应用程序外部访问 POST 路由

javascript - 菜单滚动也会滚动背景屏幕

javascript - 奇怪的 AngularJS 初学者行为

javascript - 错误 : [ng:areq] Argument 'TasksCtrl' is not a function, 未定义

javascript - 如何从未隐藏的第一个复选框中获取值