R Shiny输出不会在Bootstrap轮播中呈现

时间:2017-05-01 22:47:58

标签: html r twitter-bootstrap shiny reactive-programming

我正在尝试在我的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 */
}

1 个答案:

答案 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"
            )
        )
    )
)
)