Trenutno imam stran Angular.js, ki omogoča iskanje in prikazuje rezultate. Uporabnik klikne na rezultat iskanja, nato pa klikne gumb nazaj. Želim, da se rezultati iskanja ponovno prikažejo, vendar ne morem ugotoviti, kako naj sprožim izvajanje iskanja. Tukaj so podrobnosti:
Kako naj poskrbim, da se funkcija iskanja ponovno izvede, ne da bi uporabnik moral pritisniti gumb za iskanje? Če bi šlo za jquery, bi izvedel funkcijo v funkciji documentready. Ne vidim enakovredne funkcije za Angular.js.
Po eni strani, kot je dejal @Mark-Rajcok, se lahko izognete zasebni notranji funkciji:
// 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();
Prav tako si lahko ogledate direktivo ng-init. Izvedba bo zelo podobna:
// 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
};
Vendar pazite na to, saj angularna dokumentacija nakazuje (od različice 1.2), da za to NE smete uporabljati ng-init
. Vendar je to odvisno od arhitekture vaše aplikacije.
Sam sem uporabil ng-init
, ko sem želel prenesti vrednost iz zaledja v angularno aplikacijo:
<div data-ng-controller="myCtrl" data-ng-init="init('%some_backend_value%')"></div>
To lahko storite, če želite opazovati spremembo objekta DOM viewContentLoaded in nato nekaj storiti.Tudi uporaba $scope.$on deluje, vendar drugače, zlasti če imate pri usmerjanju način ene strani.
$scope.$watch('$viewContentLoaded', function(){
// do something
});