Ich habe ein Array, das ich verwenden, um eine Tabelle mit ng-Wiederholung zu füllen. Ich verwende einen Filter im Controller, der das Array basierend auf den Werten einer bestimmten Variablen columnFilter
filtert. Jetzt wird meine Tabellenansicht nicht aktualisiert, wenn ich diese Variable ändere. Das heißt, der Filter wird nicht erneut angewendet, sobald sich die Variable ändert.Update ng-Repeat Array bei Verwendung von Filter in Controller
JS
var myApp = angular.module('myApp',[]);
function MyCtrl($scope, $filter) {
$scope.name = 'Superhero';
$scope.col={name:""};
$scope.TableData = [{
name: "2017/03/01-14",
specification: "1wk",
},
{
name: "2017/03/01-17",
specification: "Set-04",
},
{
name: "2017/03/04-11",
specification: "1wk",
},
{
name: "2017/04/01-14",
specification: "1wk",
},
{
name: "2017/03/10-10",
specification: "Set-04",
},
{
name: "2017/03/10-10",
specification: "Set-04",
}
$scope.TableDataFiltered = $filter('filter')($scope.TableData, $scope.col);
}
HTML
<div ng-controller="MyCtrl">
<input type="text" ng-model="col.name">
<table>
<thead>
<tr>
<th>name</th>
<th>spec</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="item in TableDataFiltered">
<td>{{item.name}}</td>
<td>{{item.specification}}</td>
</tr>
</tbody>
</table>
</div>
Um alle Antworten zu sagen, wie | filter: expression
Syntax verwenden, ich weiß darüber, aber die tatsächliche Anwendung hat andere Filter und solche, die die Notwendigkeit erfordern, in der Steuerung selbst zu filtern. (. I ein minimales Beispiel vorgesehen, die dieser Punkt nicht sehr klar machen, dass auf mich ist)
_ "Der Filter wird nicht erneut angewendet" _ Sie haben sich dafür entschieden, manuell zu filtern, so dass Sie dafür verantwortlich sind, den Filter bei Bedarf selbst anzuwenden. Sie haben erwähnt, dass '$ scope. $ Watch()' nicht funktioniert hat. Was war das Problem? – zeroflagL
@zeroflagL Es gab kein Problem, es hat einfach nichts getan. Meine Tabelle wird nicht aktualisiert, wenn die Filter aktualisiert werden. Ich überprüfe die Ausgabe der Filtervariablen, um zu sehen, ob diese aktualisiert wird, und es ist. Das Problem ist, dass ng-repeat aus irgendeinem Grund nicht auffrischt. – ChaoticTwist