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

所以问题是每当我调用 fetch 时,模型仍然没有被填充。我在想,因为 easyXDM 请求是异步的,所以它还没有填充。无论如何要确保模型已填充并可以使用?也许使用回调,关于如何创建回调的任何方向?

4

1 回答 1

1

对不起,我最初误解了你的问题。无论是否使用 easyXDM,Fetch 都是异步的,因此您必须实现 fetch 的 onsuccess 回调,或者在对其进行任何操作之前检查模型是否已设置(使用长度或其他方法)。这篇文章也可能有所帮助:

Backbone.js:检查数据是否准备好以及数据集是否为空的优雅方法

于 2012-10-03T15:57:34.537 回答