2015-07-11 75 views
0

我不確定爲什麼ng-click沒有選擇該功能。我試着將我的'Next'函數分配給一個範圍變量,但它仍然無法工作。爲什麼我的ng-click不起作用

下面是HTML(exluding元素中的 '應用' 位)

<div ng-controller="CarouselCtrl"> 
    <div> 
     <img src="" class="carousel-arrow" ng-click="Next();"> 
     <h1>{{Index}}</h1> 
    </div> 
</div> 

這裏是JavaScript

var App = angular.module('App', []); 

App.controller('CarouselCtrl', ['$scope', function($scope) { 

    var Carousel = {}; 

    Carousel.Data = ['Slide 1', 'Slide 2', 'Slide 3', 'Slide 4', 'Slide 5'] 
    Carousel.Index = 0; 

    Carousel.Next = function() { 

     if (Carousel.Index >= Carousel.Data.length) { 
      Carousel.Index = 0; 

     } else { 
      Carousel.Index++ 
     } 
    } 

     $scope.Index = Carousel.Data[Carousel.Index]; 
     $scope.Next = function(){ 
     Carousel.Next(); 
     console.log('clicked'); 
    } 
}]); 
+1

是您的包裹在一個標籤與'NG-app'屬性頂格? – adrianton3

+0

是的,它是。:)我現在正在檢測點擊,但點擊時不更新{{index}}變量。 – beginnerCoder11

+0

這是因爲你沒有更新$ scope.Index變量;用'$ scope.Index = Carousel.Data [Carousel.Index];'在你的else分支中更新它 – adrianton3

回答

1
$scope.Next = Carousel.Next(); 

變化到

$scope.Next = Carousel.Next; 

通過做$scope.Next = Carousel.Next();的範圍爲Next不再是函數,而是由Carousel.Next()函數返回的值。所以你所要做的就是像上面那樣分配函數定義。

更新

$scope.Next = function(){ 
     Carousel.Next(); 
     $scope.Index = Carousel.Data[Carousel.Index]; 
     console.log('clicked'); 
}