StateManager Selektor funktioniert nicht

Ich möchte gerne einen einzelnen Einkaufswelten Artikel-Slider mit einer anderen itemMinWidth versehen.
Die Einkaufswelt, welcher diesen Slider beinhaltet, befindet sich in einem DIV mit der Klasse home–slider

Die einzige Lösung sehe ich über den folgenden Code:

 

 window.StateManager .addPlugin('.home--slider \*[data-product-slider="true"]', 'swProductSlider', { itemMinWidth: 450 }) ;

 

 

Leider funktioniert dies so nicht. Der reine Selektor *[data-product-slider=„true“] ohne .home–slider funktioniert aber.

Ich freue mich über einen Tipp

Hallo,

ich vermute, dass der normale Aufruf des Plugins auf dem Element weiterhin greift. Du müsstest wahrscheinlich erst mit window.StateManager.removePlugin() die originale Registrierung am StateManager auflösen und Deinen eigenen Aufruf hinzufügen.

Sonnige Grüße,
Phil

Hallo Philipp,

Ich habe das soeben ausprobiert, jedoch scheint das Plugin mit meinem Code nicht entfernt zu werden. Ich rufe die Methode bereits nach dem Laden der Einkaufswetl auf.

 

 $.subscribe("plugin/swEmotionLoader/ **onLoadEmotionFinished**", function (me) { window.StateManager .addPlugin('\*[data-product-slider="true"]', 'swProductSlider', { itemMinWidth: 600 }) .removePlugin('\*[data-product-slider="true"]', 'swProductSlider', ['xs', 's', 'm', 'l', 'xl']) ; });

 

Das Ändern der itemminwidth habe ich absichtlich vorher eingefügt, damit ich sehe ob der Slider (nur zwei Produkte) auch deaktiviert wird. Diese Änderung wird vorgenommen, der Code wird also ausgeführt. Hast Du einen weiteren Tipp für mich?

Hallo,

das Registrieren oder auch Entfernen von Plugins am StateManager darf nicht abhängig von Events sein und sollte schon vor DOMready geschehen. Wenn Dein Event gefeuert wird, hat der StateManager bereits alle registrierten Plugins ausgeführt.

Sonnige Grüße,
Phil

1 „Gefällt mir“

Hallo, danke die Info. Leider hat es auch nicht ausserhalb des Events geklappt. Gibt es noch andere Punkte zu beachten?

Grüsse