触发重绘会导致隐藏列

时间:2013-12-30 23:37:10

标签: knockout.js footable

我有一个plnk来演示我的问题:http://plnkr.co/edit/bXINbDBIMb0LbLitHGbl

有一个任务列表,每个任务可以包含一个任务列表。任务只能是顶级或具有单个父级,而任务不能包含自身。

当我使用foreach绑定时,任务被“保存”到正确的任务并按预期工作。 (除了footable功能之外)(保存在引号中,因为除了被推送到可观察数组之外,任务实际上没有被保存。)

根据这个答案:https://stackoverflow.com/a/20811414/2033294我创建了一个自定义的Footable绑定。绑定工作完全按照我的意愿工作,直到我尝试使用嵌套的任务。

要查看我想要的行为,请按“添加任务”,按“确定”,单击刚刚创建的任务,然后添加另一个任务或子任务。按“确定”,再次单击“任务”,看到子任务按预期保存。

要查看问题,请更改

<tbody data-bind="foreach: items, delegatedHandler: 'click'"> 

<tbody data-bind="footable: items, delegatedHandler: 'click'"> 

重复上述步骤。你会发现子任务没有像你期望的那样“保存”。如果按“应用”然后添加一个子任务,它将显示有效,直到您将“确定”回到主列表,然后再次查看任务。你会发现子任务并没有真正推送到正确的数组。

编辑:我已将问题缩小到触发footable_redraw的位置。当我禁用它时,数据显示为预期。 footable不会重绘,但至少知道我知道问题不是基础数据或视图模型。

编辑:我已在footable.js中找到了此代码的问题:(第615行)

if (data.hide[breakpointName] === false) $column.show();
                else $column.hide();

因此,由于某种原因,列被设置为隐藏,我只是不确定如何设置它们以便它们不被隐藏。

编辑:我发现如果我这样做:(在footableBinding.js中)

footable.reset();
footable.init();

不管:

footable.redraw();

这给出了我期望的行为,但这似乎不是解决问题的正确方法。

1 个答案:

答案 0 :(得分:0)

对我来说同样的问题,只是在一张简单的桌子上。

如果我没有<ht>属性“数据隐藏”到“平板电脑”或“手机”,我的表格就会隐藏。

只需要将一个<ht>与数据隐藏放在一起,我的表就可见了。

这看起来像个错误。