2015-03-02 71 views
4

我想在ng-grid 3.0中使用headerCellTemplate选项基于AngularJs MultiSelect添加自定义过滤器。请参阅plunker角度ui网格自定义过滤器不能用作headerCellTemplate

<div ng-controller="mainCtrl"> 
    <multi-select 
    input-model="names" 
    button-label="name" 
    item-label="name" 
    tick-property="ticked" 
    max-labels="1" 
    helper-elements="" 
    on-item-click="fClick(data)" 
    default-label="None" 
    class="level-multi-select"> 
    </multi-select> 

一切,只要它位于网格外,看起来很好。当它在里面时,我遇到了两个问题:

  1. 看起来好像数据被过滤但过滤后显示不正确。

  2. 布局损坏。不覆盖CSS,下拉菜单隐藏在UI单元后面,点击后重新定位。在应用来自here(当前版本的plunker)的建议后,下拉菜单正在改变顶部标题的高度。我更喜欢与网格菜单相同的显示(点击右上角的图标后可见)。

回答

2

感谢你们对GitHub上的帮助,我设法找到了两种解决方案:

一个是在我的例子覆盖customHeaderTemplate像上面。 css必须进行不同的修改。我还纠正了代码中的错误。在html中应该没有对mainCtrl的引用。我使用第二个控制器进行多选,并修改代码以使用$ scope.grid.appScope。我认为使用广播是清晰的解决方案,但至少码短

http://plnkr.co/edit/lcoTtIdg723yHXtwsKjl?p=preview

$scope.grid.appScope.myData = _.filter($scope.grid.appScope.originalData, function (item) { 

    return _.contains(selectedNames, item.name) ; 
    }); 

二是基于新的发展这是尚未UI电网的一部分。 您可以按照问题#2918查看详细信息。也有链接到GitHUb页面上的第二个plunke

+2

http://ui-grid.info/docs/#/tutorial/306_custom_filters演示如何在UI-Grid中执行多选过滤器的官方示例: 示例中的“年龄”列使用模式呈现多选选项。 – Tony 2015-10-14 15:46:00