2016-11-12 13 views
1

コントローラ変数をディレクティブから変更し、その更新値をng-showに渡す必要があります。コントローラ変数をディレクティブからng-showに渡す - 角型JS

コントローラー:

self.menuVisible = false; 

指令:

icon.bind('click', function(){ 
    scope.menuCtrl.menuVisible = true; 
}) 

は注:以下の私のコードを参照してくださいの質問に関連していないディレクティブでより多くのコード行がたくさんありますし、そしてこれがng-clickで渡すことができるコントローラ関数の代わりにディレクティブを使用する理由です。

ビュー:

<div class="menu-item" ng-show="menuCtrl.menuVisible"></div> 
<div class="icon" my-directive></div> 

目に見えるものは何も要素をクリックし、私はデベロッパーツールでmenuCtrl.menuVisibleをチェックするとき、それはアクションの後にtrueを返すには起こりませんが。

私が間違っていることを説明してください。

ありがとうございます!

+0

この 'メニューitem'が場合でも' menuCtrl.menuVisible = true'に示されていませんか? –

+0

いいえ、そうではありません。私はちょうどコントローラと別の関数を作成し、ng-clickを使って関数を適用することでチェックしました。それは動作し、私はこのオプションを使うことができましたが、ディレクティブを使って同じことをする方法を知りたがっていました。将来のためだけに。 –

+0

ディレクティブの中で 'menuCtrl'はどこから得られますか?どのようにスコープが追加されたかを示すコードを表示します –

答えて

1

あなたは$digestループ内であなたの変数を更新していないほとんどの場合、このようにしてみてください:

icon.bind('click', function(){ 
    $scope.$apply(function() { 
     scope.menuCtrl.menuVisible = true; 
    } 
}) 
+0

はい、それは本当です。これについて読む必要があります:)ありがとうございました!出来た! –

+0

あなたは歓迎です、幸運 –

関連する問題