Аргумент 'CarouselDemoCtrl' не является функцией, получил неопределенный

0

indexCtrl.js

var app = angular.module('app', ['ui.router', 'ui.bootstrap', 'ngAnimate'])
.config(['$urlRouterProvider', '$stateProvider', function($urlRouterProvider, $stateProvider) {
  $scope.myInterval = 5000;
  $scope.noWrapSlides = false;
  $scope.active = 0;
  var slides = $scope.slides = [];
  var currIndex = 0;



  $scope.addSlide = function() {

  $http.get('/find').success(function(data) {

    for (var i = 0; i < data.length; i++) {
        var discovery = {};
        discovery.image = data[i].image;
        discovery.name = data[i].name;
        discovery.objectType = data[i].objectType;
        discovery.description = data[i].description;
        discovery.discoveredBy = data[i].user;
        discovery.discoveredOn = data[i].discoveredOn;
        discovery.location = data[i].location;

        $scope.discoveries.push(discovery);

    } // end of for loop

    for (var i = 0, i < 4, i++) {
        var discovery = {};
        var randNum = Math.floor(Math.random() * discoveries.length);
        slides.push({
            image = discoveries[randNum].image;
            name = discoveries[randNum].name;
            objectType = discoveries[randNum].objectType;
            description = discoveries[randNum].description;
            discoveredBy = discoveries[randNum].user;
            discoveredOn = discoveries[randNum].discoveredOn;
            location = discoveries[randNum].location;
        });
    }

});



// var newWidth = 600 + slides.length + 1;
// slides.push({
//   image: '//unsplash.it/' + newWidth + '/300',
//   // image: '../../images/jumbotron.jpg',
//   text: ['Nice image','Awesome photograph','That is so cool','I love that'][slides.length % 4],
//   id: currIndex++
// });
};

$scope.randomize = function() {
var indexes = generateIndexesArray();
assignNewIndexesToSlides(indexes);
};

for (var i = 0; i < 4; i++) {
  $scope.addSlide();
}

// Randomize logic below

function assignNewIndexesToSlides(indexes) {
  for (var i = 0, l = slides.length; i < l; i++) {
    slides[i].id = indexes.pop();
  }
}

function generateIndexesArray() {
  var indexes = [];
  for (var i = 0; i < currIndex; ++i) {
    indexes[i] = i;
  }
  return shuffle(indexes);
}

// http://stackoverflow.com/questions/962802#962890
function shuffle(array) {
var tmp, current, top = array.length;

if (top) {
  while (--top) {
    current = Math.floor(Math.random() * (top + 1));
    tmp = array[current];
    array[current] = array[top];
    array[top] = tmp;
  }
}

  return array;
}




}]);

Я пытаюсь захватить информацию из моей базы данных и использовать четыре случайных объекта в демонстрационной карусели вместо того, что угловой ui bootstrap имеет для своей демонстрации. В настоящее время я получаю эту ошибку: "Аргумент" CarouselDemoCtrl "не является функцией, полученной неопределенной", когда я использую текущую функцию $ scope.addSlide. Тем не менее, он не выдает никаких ошибок и отлично работает, когда у меня есть раздел с комментариями в функции $ scope.addSlide. Почему это повлияет на мой CarouselfDemoCtrl, чтобы сделать его не функцией и как я могу его исправить? Опять же, карусель работал, пока не изменил функцию $ scope.addSlide.

Это мой app.js:

var app = angular.module('app', ['ui.router', 'ui.bootstrap', 'ngAnimate'])
.config(['$urlRouterProvider', '$stateProvider', function($urlRouterProvider, $stateProvider) {

    $urlRouterProvider.otherwise('/');

    $stateProvider
    .state('profile', {
        url: '/profile',
        templateUrl: 'views/profile.html',
        controller: 'profileCtrl'
    })
    .state('discover', {
        url: '/discover',
        templateUrl: 'views/discover.html',
        controller: 'discoverCtrl'
    })
    .state('find', {
        url: '/find',
        templateUrl: 'views/find.html',
        controller: 'findCtrl'
    })
    .state('index', {
        url: '/index',
        templateUrl: 'views/index.html',
        controller: 'CarouselDemoCtrl'
    })

}]);

Это index.html:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Discover It!</title>
<script src = "https://plus.google.com/js/client:platform.js" async defer></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">
<link rel="stylesheet" href="css/style.css">
</head>

<body>




<div class="container" ng-app="app">
<div ng-controller="CarouselDemoCtrl">
  <div style="height: 305px">
    <div uib-carousel active="active" interval="myInterval" no-wrap="noWrapSlides">
      <div uib-slide ng-repeat="slide in slides track by slide.id" index="slide.id">
        <img ng-src="{{slide.image}}" style="margin:auto;">
        <div class="carousel-caption">
          <h4>Name: {{slide.name}}</h4>
          <p>{{slide.description}}</p>
        </div>
      </div>
    </div>
  </div>
</div>
</div>


<script src="https://code.jquery.com/jquery-2.2.3.js" integrity="sha256-laXWtGydpwqJ8JA+X9x2miwmaiKhn8tVmOVEigRNtP4=" crossorigin="anonymous"></script>
<script src="//widget.cloudinary.com/global/all.js" type="text/javascript"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-router/0.3.1/angular-ui-router.js"></script>
<script src="scripts/angular-animate/angular-animate.min.js"></script>
<script src="scripts/angular-ui-bootstrap/dist/ui-bootstrap-tpls.js"></script>

<script src="scripts/app.js"></script>
<script src="scripts/controllers/profileCtrl.js"></script>
<script src="scripts/controllers/discoverCtrl.js"></script>
<script src="scripts/controllers/findCtrl.js"></script>
<script src="scripts/controllers/indexCtrl.js"></script>

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

  • 0
    У вас есть еще файлы, в которые вы включаете //angular.module (app, [])?
  • 0
    Да, еще три без [] и еще один с []. Я попытался снять скобки в моем текущем контроллере (CarouselDemoCtrl), но это все равно дает мне ту же ошибку.
Показать ещё 6 комментариев
Теги:
carousel
angular-ui-bootstrap

1 ответ

0
Лучший ответ

Проблема заключалась в том, что у меня были ошибки в моей логике цикла, пытаясь получить доступ к информации, которая была неопределенной, что почему-то вызвало "Аргумент" CarouselDemoCtrl "не является функцией, получило неопределенную" ошибку ". Поэтому, если у вас возникла ошибка, подобная этой жалобе контроллер, попробуйте также проверить свою логику.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню