2016-06-01 11 views
0

Knockout.jsでカルーセルコンポーネントを作成したいと思います。jsfiddle.netからノックアウトカルーセルの例をフォークしました。KOカルセルの例が動作しない

HTML::

<!-- start main slider carousel --> 
      <div id="myCarousel" class="carousel slide" data-ride="carousel" data-interval="false"> 
       <!-- main slider carousel items --> 
       <!-- ko foreach:imagePaths --> 
       <div class="carousel-inner"> 
        <div data-bind='attr:{"data-slide-number": $index, "class": "item" }, css: {"active": $index() == 0}'> 
         <img data-bind='attr:{src: link, height: 200, width: 132, "class": "img-responsive", alt: alt }' /> 
        </div> 
       </div> 
       <!-- /ko --> 
       <!-- main slider carousel nav controls --> 
       <!-- Left and right controls --> 
       <a class="left carousel-control" href="#myCarousel" role="button" data-slide="prev"> 
        <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span> 
        <span class="sr-only">Previous</span> 
       </a> 
       <a class="right carousel-control" href="#myCarousel" role="button" data-slide="next"> 
        <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span> 
        <span class="sr-only">Next</span> 
       </a> 
      </div> 
<!-- end main slider carousel--> 
<!-- start thumb navigation carousel --> 
<div class="col-md-6 offset-top_1" id="slider-thumbs"> 

    <!-- thumb navigation carousel items --> 
    <ol class="list-inline"> 
     <!-- ko foreach:imagePaths --> 
     <li data-bind="attr: { 'data-slide-to': $index }"> 
      <a data-bind='attr:{"id": "carousel-selector-"+ $index() }'> 
       <img data-bind="attr:{src: link, height: 20, width: 12, alt: alt }" /> 
      </a> 
     </li> 
     <!-- /ko --> 
    </ol> 

</div> 
<!-- end thumb navigation carousel --> 

にはJavaScript:ここでのソースコードである

var Image = function (data) { 
    var self = this; 
    self.alt = data.alt; 
    self.link = data.link; 
    self.title = data.title; 
    self.active = data.active; 
}; 

var CarouselViewModel = function (params) { 

    var self = this; 

    self.selectedImageIndex = ko.observable(params && params.selectedImageIndex || 0); 
    self.imagePaths = ko.observableArray(params && params.imagePaths || []); 
    self.addImage = function(img) { 
     self.imagePaths.push(img); 
    }; 

} 

var viewModel = new CarouselViewModel({selectedImageIndex: 0, imagePaths: [] }); 
ko.applyBindings(viewModel); 
viewModel.addImage({ 
alt: 'yellowstone-77', 
link: 'https://pshabalin.files.wordpress.com/2013/01/yellowstone-77.png', 
title: 'yellowstone-77'}); 

    viewModel.addImage({ 
    alt: 'yellowstone-77', 
    link: 'https://pshabalin.files.wordpress.com/2013/01/yellowstone-58.png', 
    title: 'yellowstone-58'}); 

    viewModel.addImage({ 
    alt: 'yellowstone-77', 
    link: 'https://pshabalin.files.wordpress.com/2013/01/img_1082.png', 
    title: 'img_1082.png'}); 

    viewModel.addImage(
    {alt: 'yellowstone-77', 
    link: 'https://pshabalin.files.wordpress.com/2013/01/dscn2295.png', 
    title: 'dscn2295'}); 

jsfiddle.net reference

は、私はそれが正常に動作させることはできません。誰も私がこれを解決するのを助けることができます。

+0

コードを実行した結果はどうなりますか?結果やエラーを含めてください。 – nateyolles

+0

@nateyollesエラーはありませんが、期待どおりに動作しません。コードを実行した結果を確認するには、jsfiddle参照リンクに従ってください。 –

答えて

0

第1 <!-- ko foreach:imagePaths -->の位置が間違っています。それは<div class="carousel-inner">の中で、それを含んでいないはずです。

チェック次の固定jsfiddleで働いカルーセルは:https://jsfiddle.net/elbecita/0L9vb3m4/58/

+0

はい、これは機能しますが、イメージは逆になります。左をクリックするとイメージが右に、右をクリックするとイメージが左に移動します。 –

+0

しかし、これはカルーセルの作業方法です(jsfiddleでブートストラップをロードしていれば、それが動作する方法です)。あなたは非常に似たような別の例をここで確認することができます:http://www.w3schools.com/bootstrap/bootstrap_carousel.asp – elbecita

+0

はい、あなたの権利、ありがとうございました:-) –

0

@elbecitaの答えは正しいです。私はちょっとポン引きした。私は、これは誰にも役立つことを願って

bootstrap carousel in jsfiddle

:ここ

.carousel-active-thumb { 
    border-bottom: 5px solid #000; 
    padding: 5px; 
    margin: 2px; 
} 

.carousel-thumb { 
    border-bottom: 5px solid #fff; 
    padding: 5px; 
    margin: 2px; 
} 

.carousel-thumbnail-center { 
    text-align: center; 
} 

.carousel-thumbnail-center ol { 
    display: inline-block; 
    padding: 0; 
    /* For IE */ 
    zoom: 1; 
    *display: inline; 
} 

.carousel-inner > .item > img { 
    margin-left: auto; 
    margin-right: auto; 
    display: block; 
    height: 350px; 
    width: auto; 
} 

.carousel-active-thumb a img { 
    height: 41px; 
    width: auto; 
} 

.carousel-thumb a img { 
    height: 41px; 
    width: auto; 
} 

は、そのためのフィドルです。

関連する問題