骨干模型使用easyxdm覆盖提取

时间:2012-10-03 15:56:00

标签: javascript backbone.js

我试图使用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请求是异步的所以它尚未填充。 反正是否确保模型已填充并可以使用? 也许使用回调,关于如何创建回调的任何方向?

1 个答案:

答案 0 :(得分:1)

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

Backbone.js: Elegant way to check if data ready and if the dataset is empty