2012-12-09 92 views
0

我试图在每列顶部创建一个带有过滤器的表格。angular.js表格过滤

我无法弄清楚为什么任何过滤器工作,但不是个别柱过滤器。

我@http://plnkr.co/edit/6ghH02

我自己也尝试设置NG-模型之后编译元素的代码,但没有奏效。

任何人都可以请帮忙吗?

回答

1

你可以做到这一点,如果你摆脱的指令,并使用输入[文]像这样的NG-改变属性:

function TestController ($scope) { 
    $scope.valueChanged = function (name, value) { 
     if (!$scope.search) { 
      $scope.search = {}; 
     } 
     $scope.search[name] = value; 
    } 
}; 

<body ng-controller="TestController"> 

<th ng-repeat="sortName in columnNames"> 
    <input type=text ng-model="value" ng-change="valueChanged(sortName, value)"> 
</th> 

答案的短版,为什么你原来的代码不起作用的是ngRepeat creates a new scope,并且ng模型中的值必须是可分配的变量。

0

正如@Ryan指出的那样,ng-repeat的嵌套作用域是关键。编写一个控制器,还有另外一种方法是使用子范围的$ parent属性来访问父范围搜索属性:

<th ng-repeat="sortName in columnNames"> 
    <input type=text ng-model="$parent.search[sortName]"></th> 

正如@瑞安的解决方案,不需要指令。 然而,额外的搜索属性需要被创建/初始化:

<div ng-init="search.name = ''; search.phone = ''"></div> 

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