2016-06-15 9 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; 
    } 
} 

私が作成する必要が解決策を見つけることになりましたバッジ値が表示される別のコントローラ。私は証明するためにslighty孤立Codepenを変更しました: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> 

エキス:

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

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

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

事があり、私はちょうどなぜを理解していませんこのようにする必要があります。どのような基本的な知識が私はここで逃している?

答えて

2

複数のHomeTabCtrlインスタンスがあります。 「タブ」状態が入力されたときに作成されたものと、「tabs.home」状態が入力されたときに作成されたもの。あなたの 'tab' badgeValueは1つのインスタンスにあり、 'tabs.home'は別の値です。オリジナルの簡単な修正は、代わりに 'tabs.home'コントローラーの名前を 'HomeCtrl'に変更し、その名前の空のコントローラーを作成することです。次に、親スコープ内でupdateTabValueが呼​​び出され、badgeValueが更新されます。ここで

がcodepenです:
http://codepen.io/stich12/pen/Nrrprd

+0

ノー、このソリューションと私の作業Codepenが論理的に同じだと思いますか? –

+0

あなたの右。ちょうど少し回った。私は働く場所で十分に近く見ていませんでした。 –

+0

2つの異なるインスタンスであることが分かっていると、何が起こっているのかを明確にするのに役立ちます。既存のコントローラを参照する方法があるので、これを避けることができますか?それがうまくいく間、バッジ値が実際のコントローラーですでに利用可能なときにバッジ値を処理するだけの新しいコントローラーを作成するのは少し面倒です。 –

関連する問題