angularjs: modifier les options de filtre dynamiquement
Ce que je veux, c'est quelque chose comme cette exemple dans la documentation, mais avec une entrée unique qui peut jouer les trois rôles de filtrage par "tout", "nom" ou "téléphone" propriétés", le changement de rôle est fait par une ancre cliquez sur.
Voici le code de prêts http://jsfiddle.net/ubugnu/QuyCU/ Comment puis-je mettre à jour le ng-attribut du modèle dynamiquement?
HTML
<div ng-app>
<div ng-controller="MainCtrl">
<label>Any</label> <input type="text" ng-model="search.$"> <br>
<label>Name only</label> <input type="text" ng-model="search.name"><br>
<label>Phone only</label> <input type="text" ng-model="search.phone"><br>
<div style="background-color:#FAE8F1">
<hr>
<label>Filter</label> <input type="text" ng-model="search.$"> by {{filter}} <br>
<ul>
<li><a href="" ng-click="changeFilterTo('$')">Any</a></li>
<li><a href="" ng-click="changeFilterTo('name')">By Name</a></li>
<li><a href="" ng-click="changeFilterTo('phone')">By phone</a></li>
</ul>
<hr>
</div>
<table class="table">
<tr><th>Name</th><th>Phone</th></tr>
<tr ng-repeat="friend in friends | filter:search">
<td>{{friend.name}}</td>
<td>{{friend.phone}}</td>
</tr>
</table>
</div>
</div>
JS
function MainCtrl($scope, $http) {
$scope.friends = [{name:'John', phone:'555-1276'},
{name:'Mary', phone:'800-BIG-MARY'},
{name:'Mike', phone:'555-4321'},
{name:'Adam', phone:'555-5678'},
{name:'Julie', phone:'555-8765'}];
$scope.filter = "$";
$scope.changeFilterTo = function(pr) {
$scope.filter = pr;
}
};
Vous devez vous connecter pour publier un commentaire.
Vous pouvez définir
ng-model
comme:ng-model="search[filter]"
de modifier dynamiquement à quelle variable il doit être appliqué (oùfilter
est un autre$scope
variable).Voir le violon:
http://jsfiddle.net/lopisan/vzQKk/1/
Vous devez ajouter cette ligne au contrôleur:
Et de changement d'entrée:
Voici une approche - il y a probablement d'autres.
Javascript:
Voici une autre approche simple à l'aide de boutons radio