2016-06-15 3 views
0

이것은 각도 컨트롤러의 작동 방식에 대한 오해 일 수 있지만 내 탭의 배지 값이 업데이트되지 않는 이유를 이해하려고합니다. HTML에서 https://codepen.io/tyman7/pen/JKKEbO이오닉 탭 배지 값이 제대로 업데이트되지 않음

추출 : JS에서

<ion-tab title="Home" icon="ion-home" href="#/tab/home" badge="badgeValue" ng-controller="HomeTabCtrl"> 
    <ion-nav-view name="home-tab"></ion-nav-view> 
</ion-tab> 

추출 :

내가 여기 Codepen에 문제를 격리 한

.controller('HomeTabCtrl', function($scope) 
{  
    $scope.badgeValue = 1; 

    $scope.updateTabValue = function() 
    { 
     $scope.badgeValue += 1; 
    } 
} 

내가 만드는 작업이 포함 해결책을 찾는 결국 배지 값을 보는 또 다른 컨트롤러입니다. HTML에서 https://codepen.io/tyman7/pen/pbbRpb

추출 : JS에서

<ion-tab title="Home" icon="ion-home" href="#/tab/home" badge="badgeValue" ng-controller="HomeCtrl"> 
    <ion-nav-view name="home-tab"></ion-nav-view> 
</ion-tab> 

추출 : 내가 보여 slighty를 분리 Codepen을 수정 한

.controller('HomeTabCtrl', function($scope) 
{ 

}) 
.controller('HomeCtrl', function($scope) 
{  
    $scope.badgeValue = 1; 

    $scope.updateTabValue = function() 
    { 
     $scope.badgeValue += 1; 
    } 
} 
것은이

가, 난 그냥 이해가 안 돼요을 이유 이런 식으로해야합니다. 근본적인 지식은 내가 여기서 누락 되었습니까?

답변

2

여러 개의 HomeTabCtrl 인스턴스가 있습니다. '탭'상태가 입력되면 생성되고 'tabs.home'상태가 입력 될 때 생성됩니다. 귀하의 '탭'badgeValue 한 인스턴스에 있었고 'tabs.home'다른 값. 원래의 Easy fix는 'tabs.home'컨트롤러의 이름을 'HomeCtrl'로 변경하고 그 이름의 빈 컨트롤러를 생성하는 것입니다. 그런 다음 updateTabValue가 부모 범위에서 호출되고 badgeValue를 전체적으로 업데이트합니다. http://codepen.io/stich12/pen/Nrrprd

+0


내가 생각하는이 솔루션 내 Codepen 더 논리적으로 동일 작업 : 여기에

는 codepen입니까? –

+0

네 말이 맞아. 조금 돌아 봤어. 나는 일하는 것을 충분히 가깝게 보지 않았다. –

+0

두 가지 인스턴스가 서로 다르다는 것을 알고 있으면 무슨 일이 일어나는지 명확히 알 수 있습니다. 기존 컨트롤러를 참조 할 수있는 방법이 있습니까?이를 피할 수 있습니까? 작동하는 동안 배지 값을 실제 컨트롤러에서 이미 사용할 수있을 때 배지 값을 처리하기 위해 새로운 컨트롤러를 만드는 것이 약간 어색한 것처럼 보입니다. –

관련 문제