1

イベントをブロードキャストするサービスにメソッドがあり、1 つのコントローラーがそれをサブスクライブしています。

ブロードキャストが発生すると、サブスクライバ ハンドラが 2 回実行されます。以下はセットアップです:

//Broadcaster

function (Id1, Id2, Id3) {
    var requestObj = {"ID1": Id1, "ID3": Id3};
    $http.post(url, {
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
        }
    })
    .success(function (response) {
        $rootScope.$broadcast('myevent');
    }).error(function (response) {
    });
}
================================================================

//subscriber

$scope.$on('myevent', function () {
    console.log($dialog); // Executes two times
});

原因を修正することはできません。違いを生むことができる何かが他にありますか。ありがとう。

4

1 に答える 1

3

判明したように、コントローラーの複数の宣言があったため、重複した $o​​n がトリガーされました。

これが発生する一般的な理由の 1 つは、$routeProvider構成で宣言されたコントローラーと、使用するビュー htmlが原因です。ng-controller

于 2014-07-17T09:26:00.190 に答える