В момента имам Angular.js страница, която позволява търсене и показва резултати. Потребителят щраква върху резултат от търсенето, след което щраква върху бутона за връщане. Искам резултатите от търсенето да се покажат отново, но не мога да разбера как да задействам изпълнението на търсенето. Ето каква е подробността:
Как да накарам функцията за търсене да се изпълни отново, без да се налага потребителят да натиска "бутона за търсене"? Ако това беше jquery, тогава щях да изпълня функция във функцията documentready. Не виждам еквивалента на Angular.js.
От една страна, както каза @Mark-Rajcok, можете просто да се измъкнете с частна вътрешна функция:
// 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();
Също така можете да разгледате директивата ng-init. Изпълнението ще бъде подобно на:
// 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
};
Но внимавайте за това, тъй като документацията на angular предполага (от версия 1.2) да НЕ използвате ng-init
за това. Все пак, според мен, това зависи от архитектурата на вашето приложение.
Аз използвах ng-init
, когато исках да предам стойност от back-end в angular приложението:
<div data-ng-controller="myCtrl" data-ng-init="init('%some_backend_value%')"></div>
Опитайте това?
$scope.$on('$viewContentLoaded', function() {
//call it here
});
Можете да направите това, ако искате да наблюдавате промяната на DOM обекта viewContentLoaded и след това да направите нещо.Използването на $scope.$on също работи, но по различен начин, особено когато имате режим на една страница при маршрутизацията.
$scope.$watch('$viewContentLoaded', function(){
// do something
});