2015-05-01 3 views
1

Я начинаю с разработки MEAN Stack. Я пытался поиграть с некоторыми угловатыми вещами, но полностью перепутал контроллеры. Вот мой главный HTML файлКонтроллер не функция получила неопределенное сообщение об ошибке angular js

<!--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> 

Я создал два отдельных контроллера для регистрации и сообщений. первый контроллер работает хорошо, но всякий раз, когда я пытаюсь добавить второй контроллер, я получаю сообщение об ошибке. Вот код для моих контроллеров.

//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; 
    }; 
}); 

Я получаю следующее сообщение об ошибке в хромированной консоли:

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 работает отлично, и данные были переплетены успешно. Проблема связана с страницей register.html. Я полагаю, authController не получает привязанную

Может ли кто-нибудь предложить мне лучший способ реализовать то же самое? И почему контроллер становится неопределенным?

+0

Каково фактическое сообщение об ошибке? Кроме того, не могли бы вы лучше описать проблему? Когда возникает ошибка? Что работает и что не работает? – Phil

+2

Привет, arindam, я просто попробовал свой код и его работоспособность без каких-либо ошибок. Если вы загрузили JS-файл правильно (не выбрасывайте 404), проверьте хром-dev-инструмент, потому что я попытался использовать Inline javascript. – prashant

+0

@Phil: он ясно сказал: «А почему контроллер становится неопределенным?» И ИМХО мы не должны препятствовать новым разработчикам публиковать вопросы. – prashant

ответ

0

Вот plunker ваших файлов

http://embed.plnkr.co/6jNXImBddYqjK23FCWUy/preview

Ваше приложение работает, как ожидалось. Пожалуйста, проверьте, загружены ли ваши основные файлы или нет.

Надеется, что это помогает

your code 
1

Попробуйте следующий контрольный список:

  1. angularjs Lib входит в
  2. нг-приложение = ".." директива в index.html
  3. ..path/к/модуль и другие контроллеры в index.html
  4. модуля и контроллеров определены правильно (орфографии, синтаксиса и т.д.)

например, контроллер (если нет т с использованием глобальной Угл:

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

Надеется, что это помогает.

0

При создании нового контроллера с AngularJS контроллер Суб-генератором, вы должны перезагрузить Grunt.

Смежные вопросы