2016-04-08 15 views
0

Yani kod az on hatlarında otherways yapabilirsiniz ama sadece Açısal Way istiyorum. Herhangi bir öneri ve yöntem kabul edilir.Basit Açısal Slayt gösterisi: giriş tipine bir tıklama olayı tetiklemek olamaz = "radio"

CSS:

.slide { 
    transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 1.5s; 
    opacity: 0; 
} 

.slide.showSlide { 
    opacity: 1; 
} 

HTML:

<section class="slideshow" ng-controller="sliderCtrl"> 
    <div ng-repeat="slide in slides | orderObjectBy:'sort'" sort-order="{{slide.sort}}" class="slide" ng-class="{ 'showSlide': $index == selectedIndex }"><img ng-src="{{slide.src}}" alt="{{slide.alt}}" /></div> 
    <aside id="slideControls" ng-model="slides.input"> 
     <input ng-repeat="slide in slides | orderObjectBy:'sort'" name="{{slide.alt}}" class="slideCtrl" type="radio" ng-click="slideShow($index)" /> 
    </aside> 
</section> 

Denetleyici:

app.controller('sliderCtrl', function ($scope, $http, $element, $interval) { 
    $http.get('data/slides.json') 
    .success(function(data, status, headers, config) { 
     $scope.slides = data; 
     $scope.selectedIndex = 0; 
     $scope.slideShow = function ($index) { 
      console.log($index); 
      $scope.selectedIndex = $index; 
     } 
     var theShow; 
     $scope.$watch("slides.input", function(value) { 
      var i = 1, 
       iMax = $element.children(0).children('.slideCtrl').length - 1, 
       elements = $element.children(0).children('.slideCtrl'); 
      theShow = $interval(function() { 
       $scope.slideShow(i); 
       if (i<iMax) i++; 
       else i = 0; 
      }, 3000); 
     }); 
    }) 
    .error(function(data, status, headers, config) { 
     console.log(data+', '+status+', '+headers+', '+config); 
    }); 
}); 

i bazı görüntüler ve burada gösterilmektedir kontrol radyo girişi bir dizi düğme var

REDAKTE:

SO ben yolu birisi önerdi slayt uygulanan ama yine de ben gidiyorum başarılamamışsa. Temel olarak, ng tıklama işlevini çağırmak yerine, radyo düğmemi de seçmek zorundayım, bu yüzden radyo düğmesinin kendisinde tıklama olayını gerçekten tetiklemek için ona ihtiyacım var. Ben uzunluğunu almak için öğelerini hedeflemek başardı ama çalıştığımızda:

$scope.slideShow(i).triggerhandler('click'); 

İçinden tanımsız

+0

. kontrolör yalnızca bir kez çağrılan sürece, aşağıda .success – juvian

+0

mesaj içinde bir çözüm slayt ve aralık koymak wouldn't ve mantıklı olmadığını işaretler doğru –

+0

Yapılan değişiklikler girdi bazlı ama yine hedefe ulaşmak değil. şey dönmez –

cevap

0

Sen döngü vardır özelliğini 'triggerHandler' okuyamıyor >>> geri almak bütün slayt her denetimleri ikinci. Ve muhtemelen her slayt kontrolünden saniyede bir döngü yapmak istersiniz. Bu muhtemelen yapmak istediğiniz şeydir: slideShow'ı manuel olarak çağırabileceğiniz zaman tıklatmaya ihtiyaç duymadığını görmek için

var counter = 0; 
var sliderOn = $interval(function() { 
    var tar = angular.element('#slideControls'); 
    counter = (counter < tar.children.length) ? counter+1 : 0;   
    console.log(tar.children[counter]); 
    // Click code goes here I suppose 
}, 1000); 
+0

console.log döner –

+0

geri bildirimleri temel alarak bazı ayarlamalar yapılmış ama yine hedefe ulaşmak değil tanımsız olamaz. Yukarıdaki düzenlemeleri görün –

İlgili konular