함수는 내부 angularjs controller에서 두번 호출됩니다.
저는 앵글 js를 처음 접하며 현재 매우 유선적인 종류의 버그를 가지고 있습니다.컨트롤러의 함수는 경로에 대해 로드된 뷰로 호출될 때 두 번 실행됩니다.
당신은 두번이나 경고를 보게 될 것입니다!!
저의 견해는 단순합니다.
제 앱 코드는 다음과 같습니다.
var IB = angular.module('IB', []);
//channel controller
IB.controller('channelsController', function ($scope, $routeParams) {
$scope.greet = function () {
alert('hi');
};
});
IB.config(function ($routeProvider) {
$routeProvider
.when('/channels', {
controller: 'channelsController',
template: '{{greet()}}'
})
.otherwise({ redirectTo: '/channels' });
});
먼저 Angular app을 두 번(ng-app으로 자동 초기화함으로써) 초기화하지 않는지 확인합니다.
한 번은 ng-app으로 html 페이지 2개(로그인.html용과 main.html용)를 가지고 있었는데 나중에 깨달은 문제였습니다.
둘째, 그리고 가장 중요한 것은 컨트롤러를 여러 요소에 부착했는지 확인하는 것입니다.라우팅을 사용하는 경우 일반적인 경우입니다.
제 경우 Dashboard Controller로 이동하는 방법은 다음과 같습니다.
app.config(function($routeProvider){
$routeProvider
.when('/', {
controller: 'DashboardController',
templateUrl: 'pages/dashboard.html'
})
});
하지만 dashboard.html:
<section class="content" ng-controller="DashboardController">
앵귤러를 가르친 것은JS는 내 컨트롤러를 두 번 소화합니다.
이를 해결하기 위해서는 두 가지 방법이 있습니다.
html 파일에서 ng-controller를 제거하는 방법은 다음과 같습니다.
<section class="content">
또는 라우팅에서 컨트롤러를 제거합니다(일반적으로 app.js에 위치).
app.config(function($routeProvider){
$routeProvider
.when('/', {
templateUrl: 'pages/dashboard.html'
})
});
내 생각엔 보간법을 만들어서,{{greet()}}
, 당신은 기능에 대한 시계를 만듭니다.greet
. 이 기능은 다이제스트 사이클을 실행하는 횟수만큼 호출을 받을 수 있으므로 1회 또는 2회 실행하는 것은 문제가 되지 않습니다.따라서 함수가 호출되는 시간에 의존해서는 안 됩니다.
나는 당신이 여기서 무엇을 이루고자 하는지 모릅니다.경고 1에는 두 가지가 있습니다.언제.controller
라고 합니다. 2.언제.template
평가를 받습니다.
template
뷰 부분을 제공하기 위한 것이지만, 이 경우 템플릿은 뷰를 생성하지 않는 함수를 평가하는 것에 불과합니다.
저도 같은 문제가 있어서 이렇게 했습니다.
$scope.init=function()
{
if ($rootScope.shopInit==true) return;
$rootScope.shopInit=true;
...
}
$scope.init();
마치 싱글톤처럼! (표시할때마다 아약스콜이 많아서 지루했어요)
언급URL : https://stackoverflow.com/questions/19608978/function-called-twice-inside-angularjs-controller
'source' 카테고리의 다른 글
PHP는 테마 및 플러그인에 대한 주석/헤더를 구문 분석하는 데 어떻게 사용됩니까? (0) | 2023.10.31 |
---|---|
Android Room - simple select query - 기본 스레드에서 데이터베이스에 접근할 수 없음 (0) | 2023.10.31 |
이달의 마지막 날을 찾기 위한 SQL 쿼리 (0) | 2023.10.31 |
구성 관리자.앱 설정 캐싱 (0) | 2023.10.31 |
이름을 기준으로 도커 이미지를 제거하는 방법은? (0) | 2023.10.31 |