我可以在KOGrid上使用自定义过滤器吗?

时间:2013-05-06 08:54:36

标签: knockout.js kogrid

我有一些自定义过滤器,我可以将它们放在网格之外但是如果它们与内置过滤器位于同一个地方会看起来更好,我可以以某种方式改变过滤器模板或以其他方式改变内置过滤视图?

这是我想用自定义过滤器扩展的视图

enter image description here

2 个答案:

答案 0 :(得分:2)

目前,网格菜单(过滤视图)没有自定义/可编辑模板。

它是整个网格模板的一部分:gridTemplate.html

所以目前唯一的选择是复制gridTemplate.html并在那里添加自定义过滤器和configure KoGird以使用您的模板:

kg.defaultGridTemplate = function() {
  return 'your new grid template html';
}

答案 1 :(得分:1)

我开始在KoGrid fork中实现它,但是KoGrid模板代码有点复杂,我没有时间让它立即工作。所以我做了一个不改变KoGrid源的小黑客

http://jsfiddle.net/t23Ub/10/

(function() {
    function initGridTemplate() {
            var template = $(kg.defaultGridTemplate());
            var filter = template.find("div.kgColMenu > div[data-bind='visible: showFilter']");
        filter.attr("data-name", "config.filterOptions.model");
            filter.html("");

            kg.defaultGridTemplate = function () {
                return template[0].outerHTML;
            };
    }
    initGridTemplate();
}());

它的工作原理是将一个视图模型添加到filterOptions文字中。上面代码中的data-name是我在viewmodels类型上查找视图的框架,你可以改为

filter.attr("data-bind", "template: { name: config.filterOptions.templateName, data: config.filterOptions.model }");

这就是我的数据名称属性在幕后做的事情