Obecnie mam stronę w Angular.js, która umożliwia wyszukiwanie i wyświetla wyniki. Użytkownik klika na wynik wyszukiwania, a następnie klika przycisk wstecz. Chcę, aby wyniki wyszukiwania zostały wyświetlone ponownie, ale nie mogę wymyślić, jak uruchomić wyszukiwanie, aby je wykonać. Oto szczegóły:
Jak mogę sprawić, aby funkcja wyszukiwania została wykonana ponownie bez konieczności naciskania przez użytkownika przycisku "szukaj"? Gdyby to było jquery, wykonałbym funkcję w funkcji documentready. Nie mogę'zobaczyć odpowiednika Angular.js.
Z jednej strony, jak powiedział @Mark-Rajcok, możesz po prostu uciec z prywatną funkcją wewnętrzną:
// at the bottom of your controller
var init = function () {
// check if there is query in url
// and fire search in case its value is not empty
};
// and fire it after definition
init();
Możesz również rzucić okiem na dyrektywę ng-init. Implementacja będzie wyglądać podobnie:
// register controller in html
<div data-ng-controller="myCtrl" data-ng-init="init()"></div>
// in controller
$scope.init = function () {
// check if there is query in url
// and fire search in case its value is not empty
};
Ale uważaj na to jako angular documentation implies (since v1.2) to NOT use ng-init
for that. Jednak imo zależy to od architektury twojej aplikacji.
Użyłem ng-init
, gdy chciałem przekazać wartość z back-end do aplikacji kątowej:
<div data-ng-controller="myCtrl" data-ng-init="init('%some_backend_value%')"></div>
Możesz to zrobić, jeśli chcesz obserwować obiekt DOM viewContentLoaded, aby zmienić, a następnie coś zrobić. użycie $scope.$on działa również, ale inaczej, zwłaszcza gdy masz tryb jednej strony na swoim routingu.
$scope.$watch('$viewContentLoaded', function(){
// do something
});