あなたの質問に答えて、あなたはモデルが変更されたかどうかをチェックすることができ、変更された場合にのみ、リダイレクトを直接呼び出す他の方法で保存を呼び出します。
まず、この基本的な例を確認して、「changedAttributes」を理解してください。
var ProfileModel = Backbone.Model.extend({
defaults : {
title : 'hi',
name : 'there'
}
});
var profile = new ProfileModel();
//Nothing changed so it returns false
console.log( profile.changedAttributes({title: 'hi'}) );
//Title changed so it return a hash with it
console.log( profile.changedAttributes({title: 'hi2'}) );
コードを考え出すと、次のようになります。
var collectedProfile = {
firstName : this.$('.firstName').val(),
lastName : this.$('.lastName').val(),
};
if( model.changedAttributes( collectedProfile ) ){
//instead of listen for the changed listen directly the server response
model.save(collectedProfile, {success : this.handlerServerResponse })
}else{
//model did not changed do not needed to call the server
this.doRedirect();
}
//in your view:
handlerServerResponse : function(){
//server process completed so let's redirect
this.doRedirect();
}