To, czego chcę, to przykład w dokumentacji, ale z unikalnym wprowadzeniem, które może odgrywać trzy role filtrowania według właściwości "dowolne", "nazwa" lub "telefon", zmiana rola jest wykonywana przez kliknięcie kotwicy. Oto kod gotowy http://jsfiddle.net/ubugnu/QuyCU/ Jak mogę dynamicznie aktualizować atrybut ng-model?angularjs: zmiana opcji filtrowania dynamicznie
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;
}
};
doskonałe, wiele dzięki – ubugnu
To nie dość pracy, w skrzypcach ... spróbuj wyszukać "a" i kliknięcie "telefon". Wygląda na to, że wyszukuje hasło "Wszystkie" bez względu na kliknięcie linku. Wydaje mi się, że do pracy wystarczy tylko niewielka korekta. –
Myślę, że działa dobrze, ale może w nieco nieintuicyjny sposób (ale ładnie demonstruje to rozwiązanie) - po kliknięciu "Any | By Name | By phone", po prostu łączy dolne pole tekstowe z jednym z odpowiednich górnych pól tekstowych . Więc wpisanie "a" wypełnia "a" do "Any" i kliknięcie "przez telefon" powoduje przełączenie dolnego pola tekstowego na "telefon", więc kolejne wpisywanie dodaje ograniczenia telefoniczne pozostawiając "dowolne" ograniczenie samemu .. – lopisan