2014-07-05 10 views
0

처음 AngularJS, HTML, Javascript 및 Ionic을 사용하여 사용자가 앱의 특정 페이지를 처음 입력 할 때 메시지를 표시하는 올바른 방법을 찾습니다. 그 이후에는이 메시지를 표시하지 않아야합니다.처음으로 페이지를 입력 할 때 버튼을 표시하는 방법은 무엇입니까?

현재 메시지를 표시하고 ng-show를 사용하여 '처음'플래그를 확인하는 버튼을 사용하고 있습니다. 이 플래그는 부울 'true'또는 'false'값으로 로컬에 저장되며 window.localStorage를 사용하여이 플래그를 사용합니다. 이 방법이 정확하고 그 다음 인 경우, 내 컨트롤러 내에서 존재하는 첫 번째 시간 플래그에 대한 코드는 다음과 같습니다 있는지 알고 싶습니다 : 나는 더와 버튼을 다음 한

내 페이지에서
$scope.getFT = function(){      
    return window.localStorage['firstTime'] || 0; 
}; 

$scope.setFT = function(value){ 
    window.localStorage['firstTime'] = 1;      
}; 

$scope.checkFT = function(){ 
    // Checks whether or not this is the first time (FT) the user entered this page 
    if(($scope.getFT() === 0 || $scope.getFT() === 'undefined') 
    {// This is the first time navigating in this page, show message & set local flag to true 
     console.log("checkFT: true, value of FT: " + window.localStorage['FT'] + ', now setting FT to true'); 
     $scope.setFT(1); 
     return true; 
    } 
    else 
    {// Not first time navigating through here, do not show first time message 
     console.log("checkFT: false, value of FT: " + window.localStorage['FT']); 
     return false; 
    } 
}; 

내 디버그 창에서

<ion-header-bar> 
    <!-- some code here --> 
<ion-header-bar> 

<ion-content> 
    <!-- First Time Button --> 
    <button ng-show='checkFT()' class="firstTime"> 
     <img src=".../img/firstTimeImage.png"/> 
    </button> 

    </ion-scroll> 
     <ion-list ng-repeat="i in array"> 
     <!-- . . . . more code below . . . . --> 
     </ion-list> 
    </ion-scroll> 

</ion-content> 

나는 내 응용 프로그램이 내가 페이지를 입력 처음이지만, 페이지로드가 완료되기 전에 어떤 이유로 기능이 약 9 번 호출되는 것을 식별하는 참조 : 아래의 코드, 그래서 같은 . 그것은 어떤 종류의 루프가 아니지만 아래 목록의 요소 목록에 대한 코드 논리를 갖고 있지만 그 목록은 단추와 독립적이며 그 반대도 마찬가지입니다.

그래서 제가 궁금해하는 이유는 무엇입니까? 정확히 여기서 내가 잘못하고있는 것은 무엇입니까? 내 논리가 단순히 부정확하고, 내 접근법이 완전히 잘못 되었습니까, 아니면 제가 맞습니까? 단순히 브라우저로드를 여러 번 처리하는 것입니까?

+1

'ng-show'와 같은 기능을 사용하지 않는 것이 가장 좋습니다. 앱이로드되고 대신 변수에 바인딩되면 범위 변수를 한 번 설정하십시오. 각도 별 다이제스트주기는 다양한 지시문이 처리되는 동안 여러 번 실행될 수 있습니다. – charlietfl

+1

그것은 각도가이 동작을 가졌음을 인식하지 못했던 많은 의미가 있습니다. AngularJS를 사용하여로드 할 때 필요한 메소드를 찾으려고 노력할 것입니다. 이에 대한 문서/예제 접근법을 개인적으로 권장합니까? – AGE

+1

컨트롤러 자체는 부하시처럼 컨트롤러를 설정해야합니다. – charlietfl

답변

0

공장/서비스를 만들고 플래그를 설정하여 처음 방문 여부를 확인할 수 있습니다.