1

一度だけ実行する必要があるコードがありますが、そのコードがどこに属しているのかわかりません (サービス? ファクトリー?)

これはコードです:

socket.on('recv chat', function (data){
    $("#chat").append(
        "<b>&lt;" + data.nick + "&gt;</b>: " +
        data.texto +
        "<br>"
    );
});

コードからわかるように、これは単なる基本的なチャット アプリです。私のウェブページ全体にはいくつかのタブがあり、そのうちの 1 つがチャット タブです。このコードをチャットのコントローラー内に配置すると、タブ スイッチごとに実行されるため、誰かがメッセージを送信すると、メッセージが数回追加されます。

一度だけ実行されるようにするには、どこに配置すればよいですか?

4

3 に答える 3

0
var stopWatch = $scope.$on('someEvent', function(){
 //some code here
 stopWatch();
});
于 2013-07-29T09:02:13.707 に答える
0

This is not the best solution but this is by far the best working solution i have came across. You need to remove the already registered even. Just add this line before you attach the events.

socket.removeAllListeners();

socket.on('recv chat', function (data){
    $("#chat").append(
        "<b>&lt;" + data.nick + "&gt;</b>: " +
        data.texto +
        "<br>"
    );
});
于 2016-01-23T04:12:25.067 に答える