Potrzebuję zmienić zmienną $scope
w filtrze. Zmienna $scope
jest używana dla atrybutu ng-show
, a informacja jest dostępna tylko w filtrze, ponieważ mam ng-repeat
z pewnymi informacjami i zastosowany przez niektóre filtry i muszę wiedzieć, kiedy filtry usuwają cały mój wynik, aby wyświetlić komunikat ... oto przykład: (jest to tylko pomysł)
.controller("thing", function() {
$scope.showText = false;
})
.filter("filterText", function() {
return function(information) {
if (information == "") { /* NEED TO CHANGE $scope.showText to true */ }
}
})
HTML:
<div ng-view="showText"> Some Text here </div>
<div ng-repeat="info in information | filterText"></div>
Dzięki.
Czy uważasz, że filtr powinien uzyskać dostęp do kontrolera i zmienić informacje? Dlaczego miałby to robić? Czy działanie kontrolera nie uruchamia się, jeśli zmienna showText powinna się zmienić? –
Kierujesz się w złym kierunku. Zgadzam się z @PetarMinchev, filtry nie powinny dotyczyć lub mieć dostęp do kontrolerów lub zakresów. Z definicji filtry dotyczą tylko danych wejściowych przekazywanych w może zostać zmniejszona i nic więcej. Z ograniczonymi informacjami dotyczącymi tego, co próbujesz osiągnąć, z perspektywy wysokiego poziomu powinieneś używać jednokierunkowego wiązania do monitorowania, jeśli 'informacja | filterText' ma długość zero. – tamakisquare
filtry nigdy nie powinny zmieniać danych, które są podawane, ponieważ może to spowodować wiele cykli '$ digest' i spowolnić działanie. Umieść wszystko, czego potrzebujesz w kontrolerze. – g00fy