我正在尝试在我的R Shiny应用程序中使用Bootstrap轮播。我想在每个"幻灯片"中放置按钮,文本输出和图表(图表)。
此时,旋转木马本身效果很好,第一次"滑动"其中有2个情节工作。但是在第二到第四"幻灯片"上,文本输出和绘图不呈现和按钮显示但不是'工作,我可以仅查看 UI组件,例如面板框。
在将绘图和文本输出移动到轮播中之前,它们可以正常工作。我将它们从旋转木马中移出后也一样。
以下是我的ui.R:
#include <stdio.h>
#include <stdlib.h>
typedef struct listel_{
struct listel_* next;
struct listel_* prev;
int key;
}listel;
void list_display(listel *L);
listel * list_search(listel *L, int k);
void list_insert(listel *L, int k);
void list_delete(listel *L, int k);
int main(int argc, char *argv[]) {
listel *L;
/* allocate sentinel node */
L =(listel *)malloc(sizeof(listel));
L->next = L;
L->prev = L;
/* display list while inserting 3 nodes */
list_display(L);
list_insert(L, 8);
list_display(L);
list_insert(L, 3);
list_display(L);
list_insert(L, 4);
list_display(L);
/* display search list results */
printf("%d %d\n", (list_search(L, 8) != NULL) ? 8 : 0, 8);
printf("%d %d\n", (list_search(L, 6) != NULL) ? 6 : 0, 6);
printf("%d %d\n", (list_search(L, 3) != NULL) ? 3 : 0, 3);
printf("\n");
/* display list while deleting 3 nodes */
list_display(L);
list_delete(L, 3);
list_display(L);
list_delete(L, 8);
list_display(L);
list_delete(L, 4);
list_display(L);
/* free sentinel node */
free(L);
return 0;
}
void list_display(listel *L)
{
listel *e;
if(L == NULL || L->next == L) /* if list empty */
return; /* return */
e = L->next; /* display list forward */
do{
printf("%d ", e->key);
e = e->next;
}while(e != L);
printf("\n");
e = L->prev; /* display list backward */
do{
printf("%d ", e->key);
e = e->prev;
}while(e != L);
printf("\n\n");
}
listel* list_search(listel *L, int k){
listel *e;
if(L == NULL || L->next == L) /* if list empty */
return NULL; /* return null */
e = L->next;
while (e != L && e->key != k) e=e->next;
if (e == L) /* if not found */
return NULL; /* return null */
return e;
}
void list_insert(listel *L, int k){
listel *e;
if(L == NULL) /* if no sentinel node */
return; /* return */
e = (listel *)malloc(sizeof(listel));
if(e == NULL) /* if can't allocate node */
return; /* return */
e->next = L->next; /* e->next = first node */
e->prev = L; /* e->prev = sentinel */
e->key = k;
L->next->prev = e;
L->next = e;
}
void list_delete(listel *L, int k){
listel *e;
if(L == NULL || L->next == L) /* if list empty */
return; /* return */
e = L->next;
while (e != L && e->key != k) e=e->next;
if (e == L) /* if not found */
return; /* return null */
e->prev->next = e->next; /* remove node from list */
e->next->prev = e->prev;
free(e); /* free node */
}
)
答案 0 :(得分:1)
我找到了一个使用CSS的解决方案。它可能不是最好的解决方案,但希望它可以帮助有类似需求的人。
解决方案是将carousel类添加到tabset面板。请注意,我曾经有#href =&#34;#tabs-1&#34;在每个li(a())中用于切换选项卡,这与滑动效果有冲突。它在我拿
之后起作用div(
id = "my_carousel",
class="carousel slide",
`data-ride`="carousel",
`data-interval`="false",
tags$ul(
id = "stab",
class = "nav nav-pills nav-justified shiny-tab-input",
tags$li(
class = "active",
`data-target`="#my_carousel",
`data-slide-to`="0",
a(
`data-toggle`="tab",
"Slide 1"
)
),
tags$li(
`data-target`="#my_carousel",
`data-slide-to`="1",
a(
`data-toggle`="tab",
"slide 2"
)
),
tags$li(
`data-target`="#my_carousel",
`data-slide-to`="2",
a(
`data-toggle`="tab",
"slide 3"
)
)
),
div(
class="tab-content carousel-inner",
role="listbox",
div(
class="item tab-pane active",
div(
class="well well-lg",
div(
class="panel-body"
)
)
),
div(
class="item tab-pane",
div(
class="well well-lg",
div(
class="panel-body"
)
)
),
div(
class="item tab-pane",
div(
class="well well-lg",
div(
class="panel-body"
)
)
)
)
)