Javascript 应用程序没有';当控制器位于单独的文件中时,不能加载

Javascript 应用程序没有';当控制器位于单独的文件中时,不能加载,javascript,jquery,html,angularjs,angular-controller,Javascript,Jquery,Html,Angularjs,Angular Controller,这是对我的问题的补充: 正如我在最终编辑中所述: 我已经解决了这个问题,将控制器放在应用程序所在的同一个文件中 已定义-app.js。当放置在单独的文件夹中时,它不工作。 我不知道这是为什么 但这是为什么呢?我已经尝试了好几次,当控制器位于单独的文件-js/controller.js中时,应用程序无法加载。我已经检查了路径,它是正确的 以下是应用程序: 这是我的HTML: <body data-ng-app="App"> * * * <div ng-controller="C

这是对我的问题的补充:

正如我在最终编辑中所述:

我已经解决了这个问题,将控制器放在应用程序所在的同一个文件中 已定义-
app.js
。当放置在单独的文件夹中时,它不工作。 我不知道这是为什么

但这是为什么呢?我已经尝试了好几次,当控制器位于单独的文件-
js/controller.js
中时,应用程序无法加载。我已经检查了路径,它是正确的

以下是应用程序:

这是我的HTML:

<body data-ng-app="App">
*
*
*

<div ng-controller="Ctrl">
     <p>{{obj.desc}}</p>
</div>

*
*
*
</body>
controller.js

app.controller('Ctrl', function($scope) {
    $scope.obj = [
          {
                intro: "intromessage",
                desc: "desc"
          },
          {
                intro: "intromessage2",
                desc: "desc"
          }
       ];
   });
var homeController = function($scope) {
$scope.obj = [
      {
            intro: "intromessage",
            desc: "desc"
      },
      {
            intro: "intromessage2",
            desc: "desc"
      }
   ];
   }

假设controller.js加载正确。您需要在新文件中定义
var应用程序

var app = angular.module('App'); //Continue your app module
app.controller('Ctrl', function($scope) {
    $scope.obj = [
          {
                intro: "intromessage",
                desc: "desc"
          },
          {
                intro: "intromessage2",
                desc: "desc"
          }
       ];
   });

你可以很容易地解决这个问题。您必须在js文件中做一些小的修改

app.js

var app = angular.module('App', []);
var app = angular.module('App', []);
app.controller('Ctrl',homeController);
controller.js

app.controller('Ctrl', function($scope) {
    $scope.obj = [
          {
                intro: "intromessage",
                desc: "desc"
          },
          {
                intro: "intromessage2",
                desc: "desc"
          }
       ];
   });
var homeController = function($scope) {
$scope.obj = [
      {
            intro: "intromessage",
            desc: "desc"
      },
      {
            intro: "intromessage2",
            desc: "desc"
      }
   ];
   }
这对你有用。确保在布局页面中,在应用程序js之前包含控制器js

例如:

<script src="~\controller.js"></script> <!--first-->
<script src="~\App.js"></script> <!--second-->


实际上,如果他在不同的范围内操作,则不需要它is@dbarthel你所说的不同范围是什么意思?如果他在全局范围(全局VAR)上操作,那么这不是必需的,他显然是在回应之后。通常,最好不要在全局范围内操作,而是将角度代码包装到函数调用中以将它们分开。那么每个文件都有自己的作用域,您需要定义您的模块new请在这里继续阅读关于var作用域的内容它并没有那么复杂,但是这里有比简短注释更好的来源;)这也很好!有时你必须这样做,有时你不这样做。你们能解释一下吗?这都和变量的范围有关。如果您为不完整的注释定义了sorry,那么这一切都与范围有关。如果您在app.js中定义app变量并在controller中调用它,则在此之前app变量尚未定义。所以它不会注册。如果您想让您的原始代码本身正常工作,那么布局中的inclue app.js优先于Controller,即使这样也能正常工作:)试试onceThanks mate,现在更清楚了。角度真的很特别。:)欢迎索洛:)是的,是:)