0

easyXDM を使用してバックボーン モデルのフェッチ関数をオーバーライドしようとしています。easyXDM を使用する理由は、サーバーが別のドメインにあるためです。

フェッチコードは次のとおりです。

     fetch: function(options)
     {
        model = this;
        a = true;
        this.xhr.request({
           url: "http://server.dev:9000/users/" + this.id,
           method: "GET"
        }, function(response){
           console.log(response.data);

           var jsonResponse = JSON.parse(response.data);

           if (jsonResponse.status == 'success'){
             model.set({
                firstName : jsonResponse.data.first_name,
                lastName :   jsonResponse.data.last_name,
                email : jsonResponse.data.email,
                companyName : jsonResponse.data.company.name,
                companyId : jsonResponse.data.company.id
             }) 
           }
        });

     }

モデルを取得するコントローラーのコードは次のとおりです。

    var user = new UserModel({id : id});
    user.fetch();
    alert(user.get('firstName')); // display undefined

したがって、問題は、フェッチを呼び出すたびに、モデルがまだ入力されていないことです。easyXDM リクエストは非同期であるため、まだ入力されていないため、考えています。モデルが作成され、使用できるようになっていることを確認する方法はありますか? おそらくコールバックを使用して、コールバックを作成する方法について何か指示はありますか?

4

1 に答える 1

1

申し訳ありませんが、最初にあなたの質問を誤解しました。Fetch は easyXDM の有無にかかわらず非同期であるため、操作を行う前に、fetch の onsuccess コールバックを実装するか、モデルが設定されているかどうか (長さまたは他の方法を使用して) を確認する必要があります。この投稿も役立つ場合があります。

Backbone.js: データの準備ができているかどうか、データセットが空かどうかを確認するエレガントな方法

于 2012-10-03T15:57:34.537 に答える