Actualmente tengo una página en Angular.js que permite la búsqueda y muestra los resultados. El usuario hace clic en un resultado de búsqueda y luego hace clic en el botón de regreso. Quiero que los resultados de la búsqueda se muestren de nuevo, pero no puedo averiguar cómo desencadenar la búsqueda para ejecutar. Aquí'está el detalle:
¿Cómo consigo que la función de búsqueda se ejecute de nuevo sin que el usuario tenga que pulsar el "botón de búsqueda"? Si fuera jquery entonces ejecutaría una función en la función documentready. No veo el equivalente en Angular.js.
Por un lado, como dijo @Mark-Rajcok, puedes salirte con la función interna privada:
// 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();
También puedes echar un vistazo a la directiva ng-init. La implementación será muy parecida:
// 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
};
Pero ten cuidado con ello ya que la documentación de angular implica (desde la v1.2) que NO se use ng-init
para ello. Sin embargo imo depende de la arquitectura de su aplicación.
Yo usé ng-init
cuando quise pasar un valor desde el back-end a la aplicación angular:
<div data-ng-controller="myCtrl" data-ng-init="init('%some_backend_value%')"></div>
Usted puede hacer esto si usted quiere ver el objeto DOM viewContentLoaded para cambiar y luego hacer algo. usando $scope.$on funciona también, pero de manera diferente, especialmente cuando usted tiene un modo de página en su enrutamiento.
$scope.$watch('$viewContentLoaded', function(){
// do something
});