将Shiny unbindAll和bindAll仅限于和HTML元素
Limit Shiny unbindAll and bindAll only to and HTML element
在Shiny站点中,他们说在对DOM进行更改之前,也就是说,添加或删除输入和输出之前,您需要通过调用unbindAll
和bindAll
:来告诉Shiny
function modifyDom()
{
Shiny.unbindAll()
insertInputsAndOutputs()
removeOtherInputsAndOutputs()
Shiny.bindAll()
}
问题是,我的web应用程序有两个部分:侧边栏上的选择和根据用户选择显示信息的主容器。问题是:
- 假设用户已经选择了项目1,因此结构1显示在容器上
- 当用户选择项目2时,结构1在调用
modifyDom
时被删除,并且最后一行Shiny.bindAll()
导致即使是侧边栏的选择也要重新初始化,因此它选择项目1并且结构1再次显示
因此,我的问题是:在Shiny中,是否有一种方法不解除所有对象的绑定,而只解除某个HTML元素中存在的对象的绑定。
我以前从未使用过Shiny,但根据这个链接并在其Github repo上搜索,unbindall
和bindall
函数也可以通过以下方式使用:
unbindall(element)
bindall(element)
其中element
似乎是DOM元素(从document.getElementById
函数或jQuery等效$('#element')[0]
返回的值)。
所以你可以写另一个这样的函数:
function modifyDomByElement (element) {
Shiny.unbindAll(element);
insertInputsAndOutputs();
removeOtherInputsAndOutputs();
Shiny.bindAll(element);
}
并保持modifyDom
的功能在您发布时工作(不要忘记单一责任原则)。
相关文章:
- 如何设置html元素填充的动画
- 删除对HTML元素的拖动
- 如何使用jquery迭代具有相同属性的html元素并查找onclick事件
- 如何使用JQuery在Javascript中转换字符串中的HTML元素
- 一个html元素的克隆次数太多
- 使用AngularJS Directive WHITOUT$scope创建一个动态html元素
- 为什么我在Internet Explorer上看不到html元素
- 重新排列HTML元素的顺序并更改内容
- 使用.on动态添加jquery/js不知道的html元素
- 如果类不是一个选项,如何在使用 jQuery 时控制(避免)嵌套 html 元素的样式
- 如何将html元素添加到tampermonkey中
- 访问html元素值javascript
- 如何在HTML元素上创建函数,而不是将元素作为参数传递
- 自定义HTML元素属性未显示-Web组件
- 让HTML元素充当停止滚动的锚点
- 将html元素插入到文本字符串中,以匹配另一个html字符串
- 替换HTML元素中的字符
- 如何将html元素添加为生成的内容
- 如何使用JavaScript在没有html dom的情况下隐藏html元素
- 使用JS加载HTML元素