Atualmente eu tenho uma página Angular.js que permite pesquisar e exibir resultados. O usuário clica em um resultado da busca e depois clica no botão voltar. Eu quero que o resultado da busca seja exibido novamente, mas eu posso't trabalhar em como acionar a busca para executar. Aqui's o detalhe:
Como obter a função de busca para executar novamente sem que o usuário tenha que pressionar o "botão de busca"? Se fosse jquery então eu executaria uma função na função documentready. Eu posso't ver o equivalente a Angular.js.
Por um lado, como @Mark-Rajcok disse, você pode simplesmente escapar com a função interior 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();
Você também pode dar uma olhada na diretiva ng-init. A implementação será muito 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
};
Mas tome cuidado com isso como documentação angular implica (desde a v1.2) em NÃO utilizar ng-init
para isso. Contudo imo depende da arquitetura da sua aplicação.
Eu usei "ing-init" quando eu queria passar um valor do back-end para a aplicação angular:
<div data-ng-controller="myCtrl" data-ng-init="init('%some_backend_value%')"></div>
Você pode fazer isso se quiser assistir ao objeto viewContentLoaded DOM para mudar e depois fazer algo. usar $scope.$on também funciona, mas de forma diferente, especialmente quando você tem um modo de página no seu roteamento.
$scope.$watch('$viewContentLoaded', function(){
// do something
});