私のカルーセルを初期化した後、jQueryで "each"関数を実行します。しかし、ngOnInit()関数では、私はカルーセルを初期化するために必要なデータを取得するためにhttp.getと非同期のタスクを持っています。非同期タスクの後にJqueryを実行
マイコード:
ngOnInit() { this.list(); $('.carousel').carousel(); }
list(): void {
this.http.get(`http://localhost:8082/api/list`)
.subscribe(response => {
this.c= response.json().data;
}, error => {
this.error = error;
})
}
ngAfterViewInit() {
// Your jQuery code goes here
$('.carousel .item').each(function() {
var next = $(this).next();
if (!next.length) {
next = $(this).siblings(':first');
}
next.children(':first-child').clone().appendTo($(this));
for (var i = 0; i < 2; i++) {
next = next.next();
if (!next.length) {
next = $(this).siblings(':first');
}
next.children(':first-child').clone().appendTo($(this));
}
});
}
ザ・各機能は、お使いの非同期機能からの応答がまだないので、これは...
グローバル変数ではなく、DOM要素を使用して、セマフォを使用して、非同期呼び出しからの応答を取得したり、グローバル変数やDOM要素を変更したり、 'each'関数の前に、非同期呼び出しがそれを変更した後にのみ続行します。 –
は、非同期メソッドからコールバック内のカルーセルを初期化します。 – ADyson