主干模型未使用服务器数据更新

Backbone model not updating with server data

本文关键字:数据 更新 服务器 未使用 模型      更新时间:2023-09-26

我是Backbone的新手,无法解决这个问题。

这是我的型号:

var itinerary = Backbone.Model.extend({
    defaults: function() {
      return {
        ItineraryID: null,
        ItineraryString: "No itineraries",
        CreatorID: null,
        PublicFlag: false,
        CreateDate: null,
        LastUpdate: null
      }
    },
    urlRoot:'/dev/api/itineraries',
    idAttribute:'ItineraryID'
});

这是我从服务器获取给定行程的代码:

function show_saved_itinerary(tripID) {
    //Get itinerary from database
    var savedTrip = new itinerary({ItineraryID:tripID});
    savedTrip.fetch();
    thisTrip = savedTrip.get('ItineraryString');
}

我从服务器得到了正确的响应,但"get('TineraryString')"行返回的是默认值——"No routines"——而不是从服务器获取的位。

提取后,模型如下所示:

({
    cid:"c1",
    attributes:{
        0:{
            ItineraryID:"21",
            ItineraryString:"44.8582569~-93.32529540000002~second sushi test~ChIJ7w_kLSDY94cRYTNjiDPPJa8",
            CreatorID:"1",
            PublicFlag:"0",
            CreateDate:"1412964129",
            LastUpdate:"2014-10-13 12:58:57"
        },
        ItineraryID:"21",
        ItineraryString:"No itineraries",
        CreatorID:null,
        PublicFlag:false,
        CreateDate:null,
        LastUpdate:null
    },
        _changing:false,
        _previousAttributes:{ItineraryID:"21", ItineraryString:"No itineraries", CreatorID:null, PublicFlag:false, CreateDate:null, LastUpdate:null},
        changed:{0:{ItineraryID:"21", ItineraryString:"44.8582569~-93.32529540000002~second sushi test~ChIJ7w_kLSDY94cRYTNjiDPPJa8", CreatorID:"1", PublicFlag:"0", CreateDate:"1412964129", LastUpdate:"2014-10-13 12:58:57"}},
        id:"21",
        _pending:false
})

因此,它将服务器数据添加到"0:"属性内的模型中。

但是,我如何让它替换默认值,这样一个简单的model.get()调用就会返回正确的值呢?

我假设您的JSON响应实际上是一个JSON对象数组,在这种情况下,您需要在向模型定义添加解析方法之前解析响应。

Backbone.Model.extend({
... 
 parse : function(resp){
    return resp[0];
 },
});