현재 Angular.js 페이지를 검색하고 결과를 표시 할 수 있습니다. 사용자는 검색 결과를 클릭 한 다음 뒤로 버튼을 클릭합니다. 검색 결과를 다시 표시하고 싶지만 검색을 실행하는 방법을 알아낼 수 없습니다. 세부 사항은 다음과 같습니다.
- My Angular.js 페이지는 검색 필드와 검색 버튼이있는 검색 페이지입니다. 사용자는 쿼리를 수동으로 입력하고 버튼을 누르면 Ajax 쿼리가 시작되고 결과가 표시됩니다. 검색어로 URL을 업데이트합니다. 모든 것이 잘 작동합니다.
- 사용자가 검색 결과를 클릭하면 다른 페이지로 이동합니다.
- 사용자가 뒤로 버튼을 클릭하고 내 각도 검색 페이지로 돌아 가면 검색어를 포함한 올바른 URL이 표시됩니다. 모두 잘 작동합니다.
- 검색 필드 값을 URL의 검색어에 바인딩 했으므로 예상 검색어가 포함됩니다. 모두 잘 작동합니다.
사용자가 “검색 버튼”을 누르지 않아도 검색 기능을 다시 실행하려면 어떻게해야합니까? 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
};
그러나 각도 문서는 (v1.2 이후) 사용하지 않기 때문에 주의하십시오 ng-init
. 그러나 imo는 앱의 아키텍처에 따라 다릅니다.
ng-init
백엔드에서 각도 앱으로 값을 전달하려고 할 때 사용했습니다 .
<div data-ng-controller="myCtrl" data-ng-init="init('%some_backend_value%')"></div>
답변
이 시도?
$scope.$on('$viewContentLoaded', function() {
//call it here
});
답변
나는 $viewContentLoaded
나를 위해 일할 수 없었고 ng-init
실제로 ng-repeat
(문서에 따르면) 에만 사용해야 하며 컨트롤러에서 직접 함수를 호출하면 코드가 아직 정의되지 않은 요소에 의존하는 경우 오류가 발생할 수 있습니다 .
이것이 내가하는 일이며 나를 위해 일합니다.
$scope.$on('$routeChangeSuccess', function () {
// do something
});
하지 않는 한 당신이 사용하고 ui-router
. 그런 다음 :
$scope.$on('$stateChangeSuccess', function () {
// do something
});
답변
angular.element(document).ready(function () {
// your code here
});
답변
Dimitri ‘s / Mark의 솔루션이 저에게는 효과가 없었지만 $ timeout 함수를 사용 하면 마크 업이 렌더링 된 후에 만 코드가 실행되도록하는 것이 좋습니다.
# Your controller, including $timeout
var $scope.init = function(){
//your code
}
$timeout($scope.init)
도움이 되길 바랍니다.
답변
viewContentLoaded DOM 객체를보고 변경 한 후 수행하려는 경우이 작업을 수행 할 수 있습니다. $ scope. $ on을 사용하면 라우팅에 하나의 페이지 모드가있는 경우 특히 다르게 작동합니다.
$scope.$watch('$viewContentLoaded', function(){
// do something
});
답변
각도의 $ window 객체를 사용할 수 있습니다.
$window.onload = function(e) {
//your magic here
}