在get中显示的backbone先前属性

时间:2014-05-28 19:14:12

标签: javascript backbone.js

一个简单的主干保存导致失败显示以前的属性。

我有一个属性captcharesponse,它表明在保存时验证码是否正常。

当我制作控制台模型时,该属性很好地同步并显示在属性中。

但是当我创建一个model.get(captcharesponse);我总是得到以前的属性。

这是我的代码。

var set = { 
    'nom' : v.ui.nom.val()
    , 'mail' : v.ui.mail.val()
    , 'suject' : v.ui.suject.val()
    , 'telephone': v.ui.telephone.val()
    , 'message': v.ui.message.val()
    , 'recaptcha_response_field': v.ui.recaptcha_response_field.val() 
    , 'challenge' : RecaptchaState.challenge 
} ;                 
model.set( set ) ;
model.save( { wait : true }) ;
console.log ( model ) ; // new sync attributes in 
var captcharesponse = model.get( "captcharesponse" ) ;

请帮忙

1 个答案:

答案 0 :(得分:2)

Save是异步的。

甚至在从服务器返回响应之前,

So model.get(就会执行。改为使用回调..

收听同步事件并在那里记录您的回复..

// set variable
// Listen to the model sync event
// this keyword relates to the view if you have any
this.listenTo(model, 'sync', 'getCapcha');
model.set( set ) ;
model.save( { wait : true }) ;

function getCapcha(responseModel) {
    console.log ( responseModel) ; // new sync attributes in 
    var captcharesponse = responseModel.get( "captcharesponse" ) ;
}