1

しばらくの間、わずかな問題で立ち往生しています。すべての参加者に持続する乱数を状態に保存する必要があります。

alert(delta[random]); 

値を返すので、この時点まではすべて問題ないと予想されますが、ここからミステリーが始まります。

私はすでに試しました

$.each(gapi.hangout.data.getKeys(),function(i,o){
alert(o);
});

しかし、ループに入ることはありません。ただし、配置すると

alert('dfsdasd');

submitDelta の後、動作します。最後の 2 行

    alert(gapi.hangout.data.getValue(random));
    $("#randomNumber").val(gapi.hangout.data.getValue(random));

'undefined' または [object] のアラートはありません。

function setRandom()
    {
        var rand = Math.floor(Math.random()*100);
        var random = "randomNumber";
        var delta = {};
        delta[random] = JSON.stringify(rand);
        alert(delta[random]);

        gapi.hangout.data.submitDelta(delta);

        alert(gapi.hangout.data.getValue(random));
        $("#randomNumber").val(gapi.hangout.data.getValue(random));
    }

ライブラリ src="//talkgadget.google.com/hangouts/_/api/hangout.js?v=1.1" と src="http://code.jquery.com/jquery-1.7.2 の両方を含めました。 js」

onStateChanged にハンドラーがありません

ここで何が間違っていますか?gapi.hangouts.data に触れるたびに失敗します。

4

1 に答える 1

1

ここには 2 つの問題があるようです。

1 つ目は、submitDeltaが 2 つのパラメーターを取るように定義されているのに、指定するのは 1 つだけであることです。

もう 1 つの問題は、submitDelta() が非同期であるため、呼び出された直後に getValue() または getState() が動作することを期待しないでください。この場合に対処する最善の方法は、onStateChanged.add() を使用して StateChangedEvent に登録することです。

したがって、たとえば、次のようにすることができます。

function init(){
    gapi.hangout.data.onStateChanged.add( handleChange );
    submitRandom();
}

function handleChange( stateChangedEvent ){
    var random = "randomNumber";
    var val = gapi.hangout.data.getValue(random);
    alert(val);
    $("#randomNumber").val(val);
}

function submitRandom(){
    var rand = Math.floor(Math.random()*100);
    var random = "randomNumber";
    var delta = {};
    delta[random] = JSON.stringify(rand);
    alert(delta[random]);

    gapi.hangout.data.submitDelta(delta, []);
}
于 2012-07-08T14:34:33.410 に答える