1

JavaやC#などの古典的なオブジェクト指向言語で非常に簡単にできることをしたいと思います。インスタンス化されたオブジェクトのプロパティにアクセスしたいだけです。オブジェクトは、ブラウザのウィンドウオブジェクトでグローバルにスコープされ、twitter@anywhereAPIによって提供されます。

私のコード例では、ユーザーがすでにログインしていると仮定します。

たとえば、Javaを使用している場合、次のようになります(すべてのフィールドがパブリックであると仮定します。

twttr = new twtter();
String screenName = twtter.currentUser.data('screen_name');

何らかの理由で、これはJavascriptでは非常に困難です。twitter where APIが使用しているanonymousメソッド内で、必要な値をDOM要素に設定し、後でそれを取得するという回避策があります。しかし、これは醜いです。直接アクセスしたいだけです。

これが私がこれまでに持っているものであり、Eclipseの構文チェックにも合格していません。

function AnywhereFacade()
{
    var twitterReference;
    window.twttr.anywhere
    (
        return function(T)
        {
            twitterReference = T;
        };
    )
    getValue(propertyToGet)
    {
        return twitterReference.currentUser.data(propertyToGet);
    }
};

var anywhereFacade = AnywhereFacade();

var screen_name = anywhereFacade.getValue("screen_name");

alert("screen name is: " + propertyGetter);

助けてください!とにかくJavascriptを使うのがとても難しいのはなぜですか?私がやろうとしているのは、クロージャーを使うことだと思います。

ありがとう!

4

2 に答える 2

0

Facebook JavaScriptSDKとTwitterSDKを使用していて、両方にアクセスするための一貫したインターフェイスを提供したいので、アプリで同様のことを行いました。そこで、変数の名前空間を。の下に置きますApp。どこのTwitterでも、これが変数のキャプチャ方法です。

window.App = {};

twttr.anywhere(function(T) {
    App.Twitter = {
        getValue: function(property) {
            return T.currentUser.data(property);
        },
        getPublicTimeline: function() {
            return T.Status.publicTimelime();
        }
    };
});

関数を呼び出しanywhereて、コールバック関数を渡します。この時点でどこでもライブラリがロードされない可能性があるため、コールバック関数が必要です。関数全体を渡すことにより、whereライブラリがロードされるたびにこの関数を実行する必要があると言っています。

これで、ライブラリがロードされると、この関数が実行App.Twitterされ、関数を含むプロパティが定義されgetValueます。どこでも、またはTオブジェクトがクロージャーにキャプチャされます。

あなたが今電話するなら、

App.Twitter.getValue("screen_name");

実際にどこにでもあるオブジェクト(T)は、screen_nameプロパティを取得するために使用されます。

于 2010-08-29T07:45:05.547 に答える
0

これは私がする必要があったすべてです。

document.getElementById('messagePanel').innerHTML = "loading...";
                window.twttr.anywhere(function(T)
                {

                    document.getElementById('messagePanel').innerHTML = "screen_name: " + T.currentUser.data('screen_name');
                });

これにより、私の問題は、Twitter が非同期呼び出しから戻ったときにコールバックを使用しなければならないということであることに気付きました。これは、gwt 用にラップする方法に関する最初の問題を解決するのに役立ちました。

于 2010-08-31T06:31:10.860 に答える