gpt4 book ai didi

javascript - 将 Shiny unbindAll 和 bindAll 限制为 HTML 元素

转载 作者:太空宇宙 更新时间:2023-11-04 16:08:17 24 4
gpt4 key购买 nike

在 Shiny 站点中,他们说在对 DOM 进行更改之前,也就是说,添加或删除输入和输出,您需要通过调用告诉 Shiny unbindAllbindAll:

function modifyDom()
{
Shiny.unbindAll()
insertInputsAndOutputs()
removeOtherInputsAndOutputs()
Shiny.bindAll()
}

问题是我的网络应用程序有两个部分:侧边栏上的一个选择部分和一个根据用户选择显示信息的主容器。问题是这样的:

  1. 假设,用户已经选择了item 1,所以结构1显示在容器上
  2. 当用户选择项目 2 时,结构 1 在 modifyDom 被调用时被删除,最后一行 Shiny.bindAll() 导致即使选择侧边栏重新初始化,因此它选择项目 1 并再次显示结构 1。

因此我的问题是:在 Shiny 中有没有办法不解除所有对象的绑定(bind),而只解除那些存在于某个 HTML 元素中的对象。

最佳答案

我以前从未使用过 Shiny,但根据 this link并搜索 its Github repo , unbindallbindall 函数也可以通过以下方式使用:

解除绑定(bind)(元素)

绑定(bind)(元素)

element 似乎是一个 DOM 元素(从 document.getElementById 函数或 jQuery 等效函数返回的值 $('#element')[0])。

所以你可以这样写另一个函数:

function modifyDomByElement (element) {
Shiny.unbindAll(element);
insertInputsAndOutputs();
removeOtherInputsAndOutputs();
Shiny.bindAll(element);
}

并在您发布时保留 modifyDom 功能(不要忘记 Single responsibility principle)。

关于javascript - 将 Shiny unbindAll 和 bindAll 限制为 HTML 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36340402/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com