如何解决从格式化程序中触发功能? sensitiveLayout:折叠> toggleList
是否可以从rowFormatter中触发函数?我正在使用responsiveLayout: "collapse"
-选项,我真的很喜欢。
但是,我想触发toggleList
函数(或它的意思是...。1从'19开始)
我不想不用.click()
的方式,所以我在rowClick
内创建了自己的(剥离)解决方案:
let isOpen = row._row.modules.responsiveLayout.open;
var collapseEl = row._row.element.querySelector('div.tabulator-responsive-collapse');
if (!(isOpen)) {
collapseEl.classList.add("open");
if (collapseEl) {
collapseEl.style.display = '';
}
} else {
collapseEl.classList.remove("open");
if (collapseEl) {
collapseEl.style.display = 'none';
}
}
row._row.modules.responsiveLayout.open = !(isOpen);
但是...必须有一种触发toggleList()的好方法,而不是编写具有相同功能的rip-off函数...
我尝试过row._row
中的值和函数,但是没有运气。我99.7%确信我错过了文档中的这一部分.....但是我确实尽了最大的努力来寻找。
TL; DR :我想在我的rowClick()事件函数中触发格式化程序中定义的toggleList()函数。有可能吗?
解决方法
制表器没有内置toggleList
函数。
在您引用的示例中,它只是一个名为toggleList
的函数,该函数在行格式器中定义,并在单击由格式化行添加的元素时触发。
由于toggleClick
函数是在行格式化程序中定义的,因此其范围仅限于该格式化程序功能,因此无法从其外部进行访问。
解决此问题的一种方法是将函数分配给行数据对象上的属性,然后可以从表中的其他位置访问该函数。
因此,如果我们以示例为例,您提供了指向customResponsiveCollapseFormatter
函数顶部的链接,请添加以下内容:
var data = cell.getData(); //retrieve the row data object
当我们定义toggleList
函数时,我们可以将其分配给数据对象上的属性,而不是简单的函数定义,我们可以将其称为 collapseToggle ,我们还将对其进行调整,因此它不需要传入的isOpen
属性,并且insted可以翻转打开变量本身的状态,这样就可以在格式化程序之外的任何地方调用它,而无需了解当前状态:
data.collapseToggle = function toggleList(){
open = !open;
然后在cellClick
函数中,我们可以检查行数据上是否定义了 collapseToggle 属性,然后调用它:
cellClick:function(e,cell){
var data = cell.getData();
if(data.collapseToggle){
data.collapseToggle();
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。