2015-01-06 4 views
13

Ich versuche, Eulenkarussell nach einem erfolgreichen Ajax-Aufruf neu zu initialisieren. Der Ajax-Aufruf ändert die Daten, aber die Ansicht sollte gleich bleiben. Ich habe ein Problem, bei dem die Ansicht (die Karussellstruktur) nicht neu initialisiert wird. Alles ist gut beim Laden der Seite.Wie Owl Carousel nach Ajax Anruf neu initialisieren

im mit Version 1.3.3

$(document).ready(function() { 
$(".owl-carousel").owlCarousel({ 
    items : 3 
}); 
}); 

Ajax-Aufruf

$.ajax({ 
    type: 'get', 
    url: '/public/index', 
    dataType: 'script', 
    data: data_send, 
     success: function(data) { 
     $(".owl-carousel").owlCarousel({ 
     items: 3 
     }); 
     } 
    }); 
} 

bin ich etwas fehlt, die ich tun müssen. Ich habe dieses Thema auf der GitHub-Seite angeschaut und die Vorschläge versucht, aber ohne Erfolg.

Jede Hilfe willkommen

bearbeiten

vom Rat gegeben i diese beiden Funktionen erstellt haben

function owlCarousel() { 
    var owl = $(".owl-carousel"); 
    //init carousel 
    owl.owlCarousel(); 
    owl.data('owlCarousel').reinit({ 
    items : 3 
    }); 
} 

function destroyOwlCarousel() { 
    var owl = $(".owl-carousel"); 
    //init carousel 
    owl.owlCarousel(); 
    owl.data('owlCarousel').destroy(); 
    } 
} 

Es scheint zu funktionieren, aber frage mich, ob dies der richtige Weg ist, dies zu tun?

+0

Hier ist die Eule Carousel Seite ist, die helfen könnten - http://owlgraphic.com/owlcarousel/demos/manipulations.html Haben Sie mit addItem versucht() oder reinit() –

+0

Dank für die link..trying zu setzen etwas zusammen mit ihren Beispielen, aber nicht so weit – Richlewis

Antwort

0

sollten Diese helfen:

/* 
reinit() method reinitialize plugin 

Syntax: 
owldata.reinit(newOptions) 

Yes! you can reinit plugin with new options. Old options 
will be overwritten if exist or added if new. 

You can easly add new content by ajax or change old options with reinit method. 
*/ 

$('.reinit').click(function(e){ 
e.preventDefault() 
if(booleanValue === true){ 
    booleanValue = false; 
    } else if(booleanValue === false){ 
    booleanValue = true; 
} 

owl.data('owlCarousel').reinit({ 
    singleItem : booleanValue 
    }); 
}) 
+0

danke, verzeihen Sie mir, hier dumm zu sein, aber wenn ich eine Funktion erstellen wollte, die innerhalb der Ajax-Erfolg Callback ausgeführt wird, wie würde ich das konstruieren? wie ich wirklich sehe, wie das oben genannte funktioniert. – Richlewis

+0

denke, ich habe es, wird mein Beispiel nach oben – Richlewis

0

$(window).load() Versuchen statt reinitialize

+0

Dies könnte Welleneffekte außerhalb von nur Eulen-Karussell haben - viele Dinge für die Last, die nicht bewusst sein, von diesem engen Ajax Anruf hören. Nicht falsch, nur ein riesiger Vorschlaghammer. – allicarn

-2
$('#owl-demo').data('owlCarousel').reinit(); 
+0

Herr HiDeo dieser Code funktioniert bei mir in meinem Eulen-Karussell um neu zu initialisieren. Gibt es einen Code, der neu zu initiieren ist? – venkat

+0

Ich bekomme diesen Fehler Uncaught TypeError: Kann Eigenschaft "Reinit" von undefined nicht lesen –

0

Versuchen Sie es, seine exist in owl documention:

//Initialize Plugin 
    $(".owl-carousel").owlCarousel() 

    //get carousel instance data and store it in variable owl 
    var owl = $(".owl-carousel").data('owlCarousel'); 

    owl.reinit(options) 
3

Das folgende Beispiel funktioniert.

Initialisieren des Karussells:

owl = $("#owl-demo"); 

owl.owlCarousel({ 
    items: 10, 
    autoPlay: 1000, 
}); 

Und wenn Sie die Ajax-Rückruf verwenden, versuchen:

owl.data('owlCarousel').destroy(); 

owl.owlCarousel({ 
    items: 5, 
    autoPlay: 1000, 
}); 

ich eine Geige Sie zu erklären, wie das Karussell erneut zu initialisieren: http://jsfiddle.net/s10bgckL/959/

PS: Ich habe nicht ein Array von Optionen erstellt, nur wenn Sie einige Parameter wie Geschwindigkeit, Menge der angezeigten Elemente ändern möchten usw.

Ich hoffe es hilft.

+0

Das funktioniert für mich! – Nicholas

+0

Funktioniert für mich wie Charme !! –