2016-09-05 2 views
0

indexCtrl.js인수 'CarouselDemoCtrl은'

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 부트 스트랩을 위해 무슨의 데모 회전 목마에 네 개의 임의의 객체를 사용하는 것을 시도하고 정의되지있어, 기능하지 않습니다 그들의 데모. 현재 현재 $ scope.addSlide 함수를 사용할 때 "Argument 'CarouselDemoCtrl'이 함수가 아닙니다. 정의되지 않았습니다."라는 오류가 나타납니다. 그러나, $ scope.addSlide 함수에서 주석 처리 된 섹션을 대신 사용하면 오류가 발생하지 않고 올바르게 작동합니다. 왜 이것이 내 CarouselfDemoCtrl에 영향을 미쳐 기능이 아닌가? 그리고 어떻게 수정해야합니까? 다시 말하지만, $ scope.addSlide 함수를 변경할 때까지 컨베이어가 작동하고있었습니다. 내 코드는 현재 더 많은 정보가 어디에 추가 업데이트 한

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

:

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을 수 있습니다 :

내 app.js입니다 어쩌면 내 문제가 다른 영역에서 왔기 때문일 수 있습니다.

+0

//angular.module (app, [])을 포함하는 파일이 더 있습니까? –

+0

예, []가없고 나머지 하나는 3 개가 있습니다. []를 사용하여 다른. 현재 컨트롤러 (CarouselDemoCtrl)에서 대괄호를 제거하려고했으나 동일한 오류가 발생합니다. –

+0

예, 이전에 만든 모듈을 덮어 쓸 수 있습니다. var app = angular.module ('myApp ', []); 기본적으로 새 모듈/app을 만듭니다. var app = angular.module ('myA pp '); 그것을 액세스하는 데 사용됩니다. –

답변

0

문제점은 for 루프 논리에 정의되지 않은 정보에 액세스하려고 할 때 오류가 발생하여 "Argument 'CarouselDemoCtrl'이 함수가 아니며 정의되지 않은"오류가 발생했습니다. "오류가 발생합니다. 컨트롤러에 대해 불평하는 것과 같이