Šiuo metu turiu Angular.js puslapį, kuris leidžia atlikti paiešką ir rodo rezultatus. Vartotojas paspaudžia paieškos rezultatą, tada paspaudžia mygtuką atgal. Noriu, kad paieškos rezultatai būtų rodomi iš naujo, bet negaliu išsiaiškinti, kaip paleisti paieškos vykdymą. Štai detalė:
Kaip man pasiekti, kad paieškos funkcija vėl būtų vykdoma, o naudotojui nereikėtų spausti "paieškos mygtuko"? Jei tai būtų jquery, tada vykdyčiau funkciją, esančią documentready funkcijoje. Nematau Angular.js atitikmens.
Viena vertus, kaip sakė @Mark-Rajcok, galite tiesiog išsisukti su privačia vidine funkcija:
// 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();
Taip pat galite pažvelgti į ng-init direktyvą. Įgyvendinimas bus labai panašus:
// 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
};
Tačiau būkite atsargūs, nes angular dokumentacijoje nurodoma (nuo v1.2) NENAUDOTI ng-init
. Tačiau, imo, tai priklauso nuo jūsų programos architektūros.
Aš naudojau ng-init
, kai norėjau perduoti reikšmę iš back-endo į angular programą:
<div data-ng-controller="myCtrl" data-ng-init="init('%some_backend_value%')"></div>
Tai galite padaryti, jei norite stebėti, kaip keičiasi DOM objektas viewContentLoaded, ir tada ką nors daryti.Naudojant $scope.$on taip pat veikia, bet skirtingai, ypač kai maršruto parinkimo režimas yra vienas puslapis.
$scope.$watch('$viewContentLoaded', function(){
// do something
});