2012-12-09 139 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