Derzeit habe ich eine Angular.js Seite, die Suche ermöglicht und zeigt Ergebnisse. Benutzer klickt auf ein Suchergebnis, dann klickt zurück-Taste. Ich möchte die Suchergebnisse wieder angezeigt werden, aber ich kann nicht herausfinden, wie man die Suche auslösen, um auszuführen. Hier's das Detail:
Wie bringe ich die Suchfunktion dazu, erneut ausgeführt zu werden, ohne dass der Benutzer die Schaltfläche "Suchen" drücken muss? Wenn es jquery wäre, würde ich eine Funktion in der documentready-Funktion ausführen. Ich kann das Angular.js Äquivalent nicht sehen.
Einerseits, wie @Mark-Rajcok sagte, können Sie einfach mit privaten inneren Funktion weg:
// 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();
Sie können auch einen Blick auf die ng-init Direktive werfen. Die Implementierung wird in etwa so sein:
// 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
};
Aber seien Sie vorsichtig, denn die Angular-Dokumentation impliziert (seit v1.2), ng-init
dafür NICHT zu verwenden. Allerdings hängt es imo von der Architektur Ihrer App ab.
Ich habe ng-init
verwendet, wenn ich einen Wert vom Backend in die Angular-App übergeben wollte:
<div data-ng-controller="myCtrl" data-ng-init="init('%some_backend_value%')"></div>
Versuchen Sie das?
$scope.$on('$viewContentLoaded', function() {
//call it here
});
Sie können dies tun, wenn Sie das viewContentLoaded DOM-Objekt zu beobachten, um zu ändern und dann etwas tun möchten. mit $scope.$on funktioniert auch, aber anders vor allem, wenn Sie eine Seite Modus auf Ihr Routing haben.
$scope.$watch('$viewContentLoaded', function(){
// do something
});