2016-06-15 9 views
0

링크 된 바이올린은 내 변수 isLoggedIn을 업데이트 된 상태로 유지하는 간단한 앱을 포함합니다. 문제는 함수가 한 번에 3 번 호출된다는 것입니다. 내 네비게이션 바는 사용자 인증을 기반으로 업데이트 된 상태를 유지하도록 내 경우 바인딩 2WAY 데이터를 달성하기 위해 가장 좋은 방법은 무엇 각도 컨트롤러 외부 컨트롤러

$scope.isLoggedIn = function(){ 
    console.log('errr'); 
    //calling a service 

return false; 
}; 

https://jsfiddle.net/michael_loukeris/xprmoq65/

. 각 초기화시 ng-show 여러 번 접촉하기 때문에

+0

https://daveceddia.com/controller-function-executed-multiple-times/ –

답변

0

당신은 $scope.variable하지 $scope.function 으로 ng-show을 사용해야합니다.

대신 ng-init을 사용하십시오. 귀하의 경우

:

<ul ng-init='checkUser()'> 
    <li><a href="#/this" ng-show="isLoggedIn">This</a></li> 
    <li><a href="#/that">That</a></li> 
    <li><a href="#/other">Other</a></li> 
    </ul> 

.

app.controller('MainCtrl', function ($scope) { 
$scope.checkUser = function(){ 
    $scope.isLoggedIn = false; 
    console.log('errr'); 
}; 
+0

여러분의 관점은 변수의 값을 변경하고 필요할 때 호출하는 메인 컨트롤러의 함수를 사용하는 것입니다. 나는 그것을하고 일한다. 그 좋은 연습, 로그인 subview (나는 각도 경로를 사용하여) $ scope. $ parent.checkUser() 호출 할 수 있는지 확실하지 않은 경우; 괜찮습니까? –

0

을 제거하십시오. 실행시 3 회 호출되지 않습니다. 함수 대신 true/false로 설정된 변수를 사용하십시오.

+0

실제로 컨트롤러 기능이 아닙니다 https://daveceddia.com/controller-function-executed-multiple-times/이 기사는 실제로 유익합니다 –