24

私は現在、Web ベースの Twitter クライアントで作業しているため、angular.js、node.js、socket.io を使用しました。サービスが新しいツイートを待機するクライアントに、socket.io 経由で新しいツイートをプッシュします。新しいツイートが届くと、サービスは $broadcast を介してイベントを送信します。

私のコントローラーにはイベントリスナーがあり、着信ツイートは別の関数で処理されています。この関数は、単に新しいツイートをツイート スコープにプッシュするだけです。

今、私の問題は、ビューが更新されていないことですが、スコープが拡大していることがわかります。多分あなたの1人がアイデアを持っています、どうすればこれを解決できますか?

さらに私のコード:

サービス:

(function () {
    app.factory('Push', ['$rootScope', function ($rootScope) {
        socket.on('new-tweet', function (msg) {
            $rootScope.$broadcast('new-tweet', msg);
        });
    }]);
}());

コントローラ:

(function () {
    app.controller("StreamCtrl", function StreamCtrl ($scope, $rootScope, $http, Push) {
        $scope.tweets = [];

        $http
            .get('/stream')
            .then(function (res) {
                $scope.tweets = res.data;
            });

        $scope.addTweet = function (data) {
            $scope.tweets.push(data);
            console.log($scope.tweets);
        };

        $rootScope.$on('new-tweet', function (event, data) {
            if (!data.friends) {
                $scope.addTweet(data);
            }
        });
    });
}());

プロジェクト全体はこちら: https://github.com/hochitom/node-twitter-client

4

2 に答える 2