2016-03-30 4 views
-1

Итак, я пытаюсь добавить маршруты в свое приложение angularJS, и у меня запущена проблема, когда основной контроллер моего приложения перестает работать, если я пытаюсь добавить 'ngRoute' к приложению. Кроме того, ngRoute не работает.angularJS - контроллер перестает работать, когда добавляю ngRoute

Мой код:

app.js (угловая логика) тело

(function() { 

    angular.module('fccNight', ['ngRoute']) 

    .config(['$routeProvider', function($routeProvider) { 

     $routeProvider 

     .when('/', { 
      templateUrl: 'results.html' 
     }) 
     .otherwise({ redirectTo: '/' }); 

    }]) 




    //controllers 
    .controller('mainController', ['$scope', '$http', function($scope, $http) { 

     $scope.searchTerm = ''; 
     $scope.data = []; 
     $scope.loading = false; 
     $scope.goingNo = []; 

     $scope.getResults = function() { 
      if($scope.searchTerm !== '') { 
       $scope.loading = true; 
       $scope.data = []; 
       $http.get('/api/search?term=' + $scope.searchTerm) 
        .success(function(results) { 
         $scope.loading = false; 
         $scope.data = results; 
         for(var i = 0; i < $scope.data.length; i++) { 
          $scope.goingNo.push($scope.data[i].going); 
         } 
        }); 
      } 
     } 

     $scope.addGoing = function(index) { 
      // check if user is authenticated 
      if($scope.data[index].going > $scope.goingNo[index]) { 
       $scope.data[index].going -= 1; 
      } 
      else { 
       $scope.data[index].going += 1; 
      } 
      // register in db 
     } 

    }]) 

})(); 

index.html в:

<body ng-controller="mainController" id="mainController"> 





    <!-- CONTENT --> 

    <div class="container"> 

     <div class="row text-center"> 

      <div class="col-xs-12 main"> 
       <h1>Where are you going tonight?</h1> 
       <p>Find nearby pubs and RSVP ahead of time.</p> 

      </div> 

     </div> 
     <div class="row"> 

      <div class="col-xs-12 col-sm-12 col-md-12 col-lg-8 col-lg-offset-2"> 

       <form> 

        <div class="input-group"> 
         <input id="inputSearch" ng-model="searchTerm" type="text" class="form-control" placeholder="Where are you?" autocomplete='off'> 

         <span id="goBtn" class="input-group-btn"> 
          <a ng-click="getResults()" class="btn btn-default">Go</a> 
         </span> 
        </div> 

       </form> 

      </div> 

     </div> 

     <!-- LOADING --> 
     <div class="row loading hidden" ng-show="loading"> 
      <div class="col-xs-12"> 

       <div class="loader"></div> 

      </div> 
     </div> 

     <div class="text-center">Controller is working if search term is displayed: {{ searchTerm }}</div> 


     <!-- TEMPLATE --> 
     <div ng-view></div> 


    </div> 

    <!-- footer --> 
    <footer class="row-footer"> 

     <div class="container"> 

      <div class="row"> 

       <div class="col-xs-12 text-center"> 

        <a href="https://github.com/otmeek/fcc-night"> 
         <i class="fa fa-github"></i> 
        </a> | 
        <a href="https://www.freecodecamp.com"> 
         <i class="fa fa-fire"></i> 
        </a> | built using the Yelp API 
       </div> 

      </div> 

     </div> 

    </footer> 




    <!-- =====================SCRIPTS===================== --> 
    <!-- jQuery --> 
    <script src="//code.jquery.com/jquery-1.12.0.min.js"></script> 
    <!-- Bootstrap --> 
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script> 
    <!-- AngularJS --> 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.3/angular.min.js"></script> 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/X.Y.Z/angular-route.js"></script> 
    <!-- custom scripts --> 
    <script src="js/app.js"></script> 
    <script src="js/scripts.js"></script> 
</body> 

results.html (шаблон я хочу, чтобы загрузить в на "/')

<p>Results are loading</p> 
<div class="row result" ng-repeat="result in data"> 
    <div class="col-xs-12 col-sm-12 col-md-12 col-lg-8 col-lg-offset-2 result"> 
     <div class="row"> 

      <!-- image --> 
      <div class="col-xs-3 col-sm-2"> 
       <div class="image"> 
        <img ng-src="{{ result.image || 'img/noimage.jpg' }}"> 
       </div> 
       <div ng-click="addGoing($index)" class="going text-center"> 
        {{ result.going || 0 }} going 
       </div> 
      </div> 


      <!-- text --> 
      <div class="col-xs-9 col-sm-10"> 
       <h4><a ng-href="{{ result.url || '#' }}">{{ result.name }}</a> 
        <small>{{ 'Rating: ' + result.rating || 'No rating available' }}</small></h4> 
       <p>{{ result.text || 'No reviews for this establishment.' }}</p> 
      </div> 

     </div> 
    </div> 
</div> 

Как я сказал, если я удалю всю логику маршрутизации из app.js и ng-view из index.html и просто добавлю в results.html, приложение работает нормально, контроллер загружается правильно, и все в порядке. Но добавив в приложение «ngRoute», шаблон результатов не загружается, и я не могу получить доступ к переменным или логике mainController из index.html.

Если кто-то знает, что я делаю неправильно, пожалуйста, дайте мне знать. Благодаря!

Редактировать: Я только что заметил, что cdn для angular-route.js не работает. Я не могу найти ссылку для загрузки этой библиотеки на официальном сайте, и у меня нет беседы, поэтому я понятия не имею, где взять этот файл.

+0

, что сообщение об ошибке показано в консоли браузера? –

ответ

1

Вы должны изменить X.Y.Z какой-либо конкретной версии, как 1.4.8 в вашей index.html странице для углового маршрута.

Таким образом, вы должны использовать

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular-route.js"></script> 

вместо

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/X.Y.Z/angular-route.js"></script> 
Смежные вопросы