2

Pubnub が提供するPubNub +AngularJS スクリプト ファイルを使用します。チャンネルを設定してサブスクライブするコントローラーがあります。コールバック関数でスコープ変数を設定すると、スコープ関数で値が更新されていることがわかります。問題は、更新されたばかりのこのスコープ変数が html ページに反映されないことです。コンソール出力は、pubnub メッセージがコールバック メソッドを呼び出し、メッセージを取得したことを示しています。しかし、なぜか変数データが​​htmlに反映されません。コードは次のとおりです。

TitleBarController.js

    $scope.ops_tl = new Object();
    $scope.ops_tl.data = new Array();
    $scope.ops_tl.data.push("dummy");
    console.log("pp ", $scope.ops_tl==undefined);
    PubNub.ngSubscribe({ channel: channelsToAutoSubscribe[0] });

    $rootScope.$on(PubNub.ngMsgEv(channelsToAutoSubscribe[0]), function(event, payload) {
    // payload contains message, channel, env...
        console.log('got a message event:', payload);
        if(payload.channel == channelsToAutoSubscribe[0]) {
                // i.e. ops_tl channel
                // parse message and populate channel specific variable
                console.log($scope.ops_tl.data);
                $scope.ops_tl.data.push(payload.message);
                console.log($scope.ops_tl.data);
        }
        else {
            console.log("Received message %s from an unknown channel %s", message, channel);
        }

    });

index.html

        <div class="btn-group" ng-controller="TitleBarController">
            <button data-toggle="dropdown" class="btn dropdown-toggle">
                New users -
                <span> {{ ops_tl.data.length }} </span>
                <span class="caret"></span>
            </button>
            <ul class="dropdown-menu">
                <li ng-repeat="item in ops_tl.data"><a href="#/onboarding/{{ item.data.id }}">New user - {{ item.data.name }}</a></li>
            </ul>
        </div>
4

1 に答える 1