Şu anda arama yapmaya izin veren ve sonuçları görüntüleyen bir Angular.js sayfam var. Kullanıcı bir arama sonucuna tıklıyor, ardından geri düğmesine tıklıyor. Arama sonuçlarının tekrar görüntülenmesini istiyorum ancak aramanın yürütülmesini nasıl tetikleyeceğimi bulamıyorum. İşte detaylar:
Kullanıcının "arama düğmesine" basmasına gerek kalmadan arama işlevinin tekrar çalışmasını nasıl sağlayabilirim? Eğer jquery olsaydı, documentready fonksiyonu içinde bir fonksiyon çalıştırırdım. Angular.js eşdeğerini göremiyorum.
Bir yandan @Mark-Rajcok'un dediği gibi, özel iç işlevden kurtulabilirsiniz:
// 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();
Ayrıca ng-init yönergesine de göz atabilirsiniz. Uygulama çok benzer olacaktır:
// 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
};
Ancak angular dokümantasyonu (v1.2'den beri) bunun için ng-init
kullanmamayı ima ettiği için buna dikkat edin. Ancak imo uygulamanızın mimarisine bağlıdır.
Arka uçtan angular uygulamasına bir değer aktarmak istediğimde ng-init
kullandım:
<div data-ng-controller="myCtrl" data-ng-init="init('%some_backend_value%')"></div>
viewContentLoaded DOM nesnesinin değişmesini izlemek ve ardından bir şeyler yapmak istiyorsanız bunu yapabilirsiniz. $scope.$on kullanmak da işe yarar, ancak özellikle yönlendirmenizde tek sayfa modu olduğunda farklıdır.
$scope.$watch('$viewContentLoaded', function(){
// do something
});