2016-03-29 10 views
4

ちょっと私のディレクティブに問題があります。スコープの内部ディレクティブをスコープで更新することはできません。私のコード例があります。

function linkdir1(scope){ 
 
     element.bind('click',function(){ 
 
      scope.$emit('someEvent',scope.data,scope.data2); //emit to parent directive 
 
     }); 
 
} 
 

 
function parentDir($scope){ 
 
     $scope.$on('someEvent',function(e,data,data2){ 
 
      $scope.$broadcast('broadcastEvent',data+data2); 
 
     }); 
 
    } 
 

 
function linkdir2(scope){ 
 

 
      scope.$on('broadcastEvent',function(e,data){ // i can see this data but can't update scope then. 
 
      data == 0 ? scope.show = false : scope.show = true; 
 
     }); 
 
    }
<div parent-dir> 
 
    <div dir-one></div> 
 
    <div dir-two></div> 
 
</div>

私はスコープ。$ウォッチを使用してしようと試みたが、これは動作しません。 ありがとうございます。

+0

tryスコープ。$ apply();イベントハンドラの最後に配置します。 – sdfacre

+0

https://jsbin.com/tuyukavufo/edit?html,js,output - OneCtrlの$ scope.data変数を変更して、動作していることを確認してください。 –

+1

指示コードを貼り付けてください。 – maddygoround

答えて

1

ようこそ。私はちょうど答えとしてそれを置くと思いますので、他の人は簡単に見つけることができます。それがあなたの問題を解決すれば、あなたがそれを受け入れることができれば素晴らしいでしょう。 :)

イベントハンドラの最後で

scope.$apply(); 

を追加します。

+0

私は1つの質問があります。スコープ$を2回適用し、次に使用すると$ digestについて警告しています。$ evalAsyncを使用して固定して動作していますが、これは唯一の解決策です。 –

+0

なぜ2つの範囲が必要ですか?$ apply?私にコードを見せてもらえますか? – sdfacre

+0

他の指令を更新するために必要です。私は2つのディレクティブで$ applyを使用しましたが、この$ digestの問題があります。 –

関連する問題