Momenteel heb ik een Angular.js pagina die zoeken mogelijk maakt en resultaten weergeeft. Gebruiker klikt op een zoekresultaat, klikt vervolgens op de knop terug. Ik wil dat de zoekresultaten opnieuw worden weergegeven, maar ik kan't uitwerken hoe ik de zoekopdracht kan triggeren om uit te voeren. Hier's het detail:
Hoe kan ik de zoekfunctie opnieuw laten uitvoeren zonder dat de gebruiker op de "search button" hoeft te drukken? Als het jquery was dan zou ik een functie uitvoeren in de documentready functie. Ik kan't zien de Angular.js equivalent.
Aan de ene kant zoals @Mark-Rajcok zei kun je gewoon wegkomen met private innerlijke functie:
// 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();
Ook kun je eens kijken naar ng-init directive. De implementatie zal veel lijken op:
// 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
};
Maar let op, want angular documentatie impliceert (sinds v1.2) om ng-init
NIET te gebruiken voor dat. Maar imo hangt het af van de architectuur van je app.
Ik heb ng-init
gebruikt toen ik een waarde van back-end naar angular app wilde sturen:
<div data-ng-controller="myCtrl" data-ng-init="init('%some_backend_value%')"></div>
Je kunt dit doen als je wilt kijken hoe het viewContentLoaded DOM object verandert en dan iets doet. Het gebruik van $scope.$on werkt ook, maar anders vooral als je one page mode op je routing hebt.
$scope.$watch('$viewContentLoaded', function(){
// do something
});