javascript - Controller 不是函数得到未定义的错误消息 Angular js

标签 javascript angularjs angularjs-controller

我是 MEAN Stack 开发的初学者。我试图玩一些 Angular 东西,但 Controller 完全搞乱了。 这是我的主要 html 文件

<!--main.html-->
<html>
  <head>
    <title>Chirp</title>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js"></script>
    <script src="javascripts/chirpApp.js"></script>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">
    <link rel="stylesheet" href="stylesheets/style.css">
  </head>
  <body ng-app="chirpApp">
    <div id='main' class="container" ng-controller="mainController">
      <div class="col-md-offset-2 col-md-8">
        <div class="clearfix">
          <form ng-Submit="post()">
            <input required type="text" class="form-control" placeholder="Your name" ng-model="newPost.created_by" /> 
            <textarea required class="form-control" maxlength="200" rows="3" placeholder="Say something" ng-model="newPost.text"></textarea>
            <input class="btn submit-btn pull-right" type="submit" value="Chirp!" />
          </form>
          <div id="post-stream">
            <h4>Chirp Feed</h4>
                <div class="post" ng-repeat="post in posts | orderBy:'created_at':true" ng-class-odd="'odd'" ng-class-even="'even'"> 
                  <p>{{post.text}}</p>
                <small>Posted by @{{post.created_by}}</small>
                <small class="pull-right">{{post.created_at | date:"h:mma 'on' MMM d, y"}}</small>
                </div>
          </div>
        </div>
      </div>
    </div>
  </body>
</html>

我已经创建了另一个用于注册的 html 文件。这是它的代码。

<!--register.html-->
<html>
  <head>
    <title>Chirp</title>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js"></script>
    <script src="javascripts/chirpApp.js"></script>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">
    <link rel="stylesheet" href="stylesheets/style.css">
  </head>
  <body ng-app="chirpApp">
    <div id='main' class="container" ng-controller="authController">
      <form class="form-auth" ng-submit="register()">
        <h2>Register</h2>
        <p class="text-warning">{{error_message}}</p>
        <input type="username" ng-model="user.username" placeholder="Username" class="form-control"><br>
        <input type="password" ng-model="user.password" placeholder="Password" class="form-control"><br>
        <input type="submit" value="Register" class="btn btn-primary" />
      </form>
    </div>
  </body>
</html>

我创建了两个单独的 Controller 用于注册和发帖。第一个 Controller 运行良好,但每当我尝试添加第二个 Controller 时,我都会收到一条错误消息。这是我的 Controller 的代码。

//chirpApp.js
var app = angular.module('chirpApp', []);

app.controller('mainController', function($scope){
  $scope.posts = [];
  $scope.newPost = {created_by: '', text: '', created_at: ''};

  $scope.post = function(){
    $scope.newPost.created_at = Date.now();
    $scope.posts.push($scope.newPost);
    $scope.newPost = {created_by: '', text: '', created_at: ''};
  };
});

app.controller('authController', function($scope){
  $scope.user = {username: '', password: ''};
  $scope.error_message = '';

  $scope.login = function(){
    //placeholder until authentication is implemented
    $scope.error_message = 'login request for ' + $scope.user.username;
  };

  $scope.register = function(){
    //placeholder until authentication is implemented
    $scope.error_message = 'registeration request for ' + $scope.user.username;
  };
});

我在 Chrome 控制台中收到以下错误:

Error: [ng:areq] http://errors.angularjs.org/undefined/ng/areq?p0=authController&p1=not%20a%20function%2C%20got%20undefined
    at Error (native)
    at https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js:6:453
    at tb (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js:18:250)
    at Oa (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js:18:337)
    at $get (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js:61:288)
    at https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js:48:476
    at q (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js:7:367)
    at S (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js:48:342)
    at h (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js:43:59)
    at h (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js:43:76)

main.html 工作正常,数据绑定(bind)成功。 问题出在 register.html 页面上。我想 authController 没有被绑定(bind)

有人可以建议我实现相同方法的最佳方法吗?为什么 Controller 变得未定义?

最佳答案

尝试以下 list :

  1. AngularJS 库包含在
  2. ng-app=".."指令位于index.html
  3. ..path/to/module 和index.html 中的其他 Controller
  4. 正确定义模块和 Controller (拼写、语法等)

Controller 示例(如果不使用全局 Angular 变量:

    app.controller('AppController', ['$http', '$scope', '$log',
        function($http, $scope, $log) {
          // TODO: implement
        }
    ]);

希望这有帮助。

关于javascript - Controller 不是函数得到未定义的错误消息 Angular js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29980190/

相关文章:

angularjs - 无法从指令调用父 Controller 方法

angularjs - AngularJS Controller 可以继承同一模块中的另一个 Controller 吗?

javascript - 当 JavaScript 执行更改时,jQuery 捕获下拉列表的更改事件

javascript - d3.js svg 将符号保存到 Canvas 浏览器输出 <base href ="/">

javascript - 如何使用 Jasmine 测试自定义事件(使用 Backbone)

javascript - 创建表单并添加数据抛出 Angular js 但未添加?

javascript - Controller 和指令在同一元素上请求隔离范围

javascript - React 0.12+ 中如何处理组件引用变量和 props?

css - 根据不同的值更改字形的颜色

javascript - antiforgeryToken 放在哪里