728x90
반응형
질문 : 컨트롤러를 두 번 실행하는 AngularJS와의 전투
$watch
이벤트, 지속적으로 모델 상태 확인 등과 같은 일부 코드를 두 번, 때로는 더 많이 실행한다는 것을 이해합니다.
그러나 내 코드 :
function MyController($scope, User, local) {
var $scope.User = local.get(); // Get locally save user data
User.get({ id: $scope.User._id.$oid }, function(user) {
$scope.User = new User(user);
local.save($scope.User);
});
//...
두 번 실행되어 2 개의 레코드를 내 DB에 삽입합니다. 나는 오랫동안 이것에 대해 머리를 두드리는 동안 분명히 여전히 배우고 있습니다!
답변
앱 라우터는 다음과 같이 MyController
탐색을 지정했습니다.
$routeProvider.when('/',
{ templateUrl: 'pages/home.html',
controller: MyController });
그러나 나는 이것을 home.html
에도 가지고 있었다.
<div data-ng-controller="MyController">
이것은 컨트롤러를 두 번 소화했습니다. data-ng-controller
속성을 제거하면 문제가 해결되었습니다. 또는 controller:
속성이 라우팅 지시문에서 제거되었을 수 있습니다.
이 문제는 탭 탐색을 사용할 때도 나타납니다. 예를 들어 app.js
에는 다음이 포함될 수 있습니다.
.state('tab.reports', {
url: '/reports',
views: {
'tab-reports': {
templateUrl: 'templates/tab-reports.html',
controller: 'ReportsCtrl'
}
}
})
해당 보고서 탭 HTML은 다음과 유사 할 수 있습니다.
<ion-view view-title="Reports">
<ion-content ng-controller="ReportsCtrl">
그러면 컨트롤러가 두 번 실행됩니다.
출처 : https://stackoverflow.com/questions/15535336/combating-angularjs-executing-controller-twice
728x90
반응형
'프로그래밍 언어 > HTML,CSS,JS' 카테고리의 다른 글
jQuery로 HTML 문자열 이스케이프 (0) | 2021.07.01 |
---|---|
이스케이프되지 않은 HTML 문자열 쓰기 / 출력 (0) | 2021.07.01 |
Node.js 프로젝트 용 package.json 파일을 자동으로 빌드하는 방법 (0) | 2021.06.30 |
중첩 된 객체, 배열 또는 JSON에 액세스하고 처리하는 방법 (2) | 2021.06.29 |
JavaScript 배열을 무작위로 섞는 방법 (0) | 2021.06.29 |