gpt4 book ai didi

javascript - 参数 'MainController' 不是一个函数,在 AngularJS 中未定义

转载 作者:行者123 更新时间:2023-12-03 01:56:29 27 4
gpt4 key购买 nike

这是我的 HTML 和 JS 文件

HTML 文件

<!DOCTYPE html>
<html ng-app="">

<head>
<!--Works with latest Stable Build-->
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.22/angular.min.js"></script>

<!--Does not work with Latest Beta-->
<!--UNCOMMENT ME! <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.18/angular.min.js"></script>-->


<script src="script.js"></script>
</head>

<body ng-controller="MainController">
<h1>Angular Playground</h1>
{{message}}
<br />Total Length: {{message.length}}
</body>

</html>

JAVASCRIPT 文件

var MainController = function($scope) {
$scope.message = "Hello, Michael";
};

如果我使用最新的稳定版本,那么我会得到以下结果(这显然是正确的):

Angular Playground

Hello, Michael Total Length: 14

但是,如果我使用 Beta 18,则会收到以下错误:

Error: [ng:areq] Argument 'MainController' is not a function, got undefined

页面返回以下内容:

Angular Playground #2

{{message}} Total Length: {{message.length}}

知道是什么原因造成的吗?

最佳答案

使用最新版本的 Angular (>1.3.0),您无法声明全局构造函数并将其与 ng-controller 一起使用。

一个快速修复方法是创建一个 Angular 模块并将 MainController 添加为 Controller 。

在这里,我将 MainController 包装在 IIFE 中,以防止该函数被添加为全局函数:

(function() {

angular
.module("appName", [])
.controller("MainController", MainController);

MainController.$inject = ["$scope"];

function MainController($scope) {
$scope.message = "Hello, Michael";
};

})();

在 HTML 中,您需要将 Angular 模块的名称添加到 ng-app 指令中:

<!DOCTYPE html>
<html ng-app="appName">

<head>
<!--Works with latest Stable Build-->
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.22/angular.min.js"></script>

<!--Does not work with Latest Beta-->
<!--UNCOMMENT ME! <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.18/angular.min.js"></script>-->


<script src="script.js"></script>
</head>

<body ng-controller="MainController">
<h1>Angular Playground</h1>
{{message}}
<br />Total Length: {{message.length}}
</body>

</html>

关于javascript - 参数 'MainController' 不是一个函数,在 AngularJS 中未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25392876/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com