1

これはおそらく、AngularJS でこれまでに経験した中で最も奇妙な問題です。私たちのウェブサイトは、さまざまなルートで構成されています。各ルートにはビューとコントローラーがあり、MainCtrl という親コントローラーもあります。私の index.html では、私が持っているすべてのコントローラーをインポートします。ある時点で、別の子ルートに再ルーティングし (コントローラーとして IframeCtrl を使用して /iframe と呼びましょう)、次に、イベント名を MainCtrl からすべての子に下向きにディスパッチしようとすると (ブロードキャストされた関数は IframeCtrl にあります)、何も起こりません(ローカルでは問題ありません。問題は本番環境のみです)。ルートを変更した後、 IframeCtrl からの関数がまだロードされていないことが問題かどうかはわかりませんが、 index.html にロードするので、これで十分だと思いました。ローカル。

これは MainCtrl のコードです。

globalVariables.broadcastAnimateBar({stage : data.progress});

これは、アプリ内の私の工場からのコードです。

globalVariablesService.broadcastAnimateBar = function(stage)
{
    $rootScope.$broadcast('animateBar',stage);
}

そして、これは IframeCtrl のコードです

$scope.$on('animateBar', function(event,args){
.
.
.
})

どのようにそれを行うかについてのアイデアはありますか?

ありがとう、ミラ

4

1 に答える 1

0

ブロードキャストにタイムアウトを追加することで、なんとか機能させることができました

  $timeout(function(){
       $rootScope.$broadcast('animateBar',stage);
  }, 1000);
于 2015-07-26T10:30:25.340 に答える