V súčasnosti mám stránku Angular.js, ktorá umožňuje vyhľadávanie a zobrazuje výsledky. Používateľ klikne na výsledok vyhľadávania a potom klikne na tlačidlo späť. Chcem, aby sa výsledky vyhľadávania opäť zobrazili, ale neviem prísť na to, ako spustiť vykonanie vyhľadávania. Tu je detail:
Ako dosiahnem, aby sa funkcia vyhľadávania opäť spustila bez toho, aby používateľ musel stlačiť tlačidlo "search"? Ak by to bolo jquery, potom by som vykonal funkciu vo funkcii documentready. Nevidím ekvivalent Angular.js.
Na jednej strane, ako povedal @Mark-Rajcok, môžete sa jednoducho zbaviť súkromnej vnútornej funkcie:
// 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();
Tiež sa môžete pozrieť na direktívu ng-init. Implementácia bude veľmi podobná:
// 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 dajte si na to pozor, pretože dokumentácia angularu naznačuje (od verzie 1.2), aby ste na to nepoužívali ng-init
. Avšak imo to závisí od architektúry vašej aplikácie.
Ja som použil ng-init
, keď som chcel odovzdať hodnotu z back-endu do angular aplikácie:
<div data-ng-controller="myCtrl" data-ng-init="init('%some_backend_value%')"></div>
Môžete to urobiť, ak chcete sledovať, či sa objekt DOM viewContentLoaded zmení, a potom niečo urobiť. použitie $scope.$on funguje tiež, ale inak, najmä ak máte na smerovaní režim jednej stránky.
$scope.$watch('$viewContentLoaded', function(){
// do something
});