そのため、私は基本的なBackbone.jsを使用して、基本的なユーザーマネージャーである簡単なデモページを作成しています。ユーザーの情報を作成(POST)する場合でも更新する(PUT)場合でも、同じ関数を実行します。POST要求とPUT要求の両方が成功します(つまり、「成功」関数を呼び出します)が、PUTコマンドのみがルーターをトリガーし、POST要求は、成功関数をトリガーする間、同じコード行をトリガーしません。
以下は私のイベントコードです。saveUser関数はPUT要求とPOST要求の両方を処理しますが、成功したルーターは、成功したPOST要求からではなく、成功したPUT要求からのみ起動されます(両方がデータベースの更新に成功した場合でも)。
events: {
'submit .edit-user-form': 'saveUser',
'click .delete': 'deleteUser'
},
saveUser: function (ev) {
var userDetails = $(ev.currentTarget).serializeObject();
var user = new User();
reply = user.save(userDetails, {
success: function (){
router.navigate('', {trigger: true});
},
error: function(){
$("#editError").toggle();
$("#editError").html("Error:<br/>"+reply.status+" : "+reply.statusText+"<hr/>");
}
});
return false;
},
deleteUser: function (ev){
$.ajaxSetup({
headers: {
'method':"DeleteUser"
}
});
reply = this.user.destroy({
success: function (){
router.navigate('', {trigger: true});
},
error: function(){
$("#editError").toggle();
$("#editError").html("Error:<br/>"+reply.status+" : "+reply.statusText+"<hr/>");
}
})
return false;
}
ルーターコードは次のとおりです。
var Router = Backbone.Router.extend({
routes:{
'new': 'editUser',
'edit/:id': 'editUser',
'': 'home'
}
});
var router = new Router();
//ROUTES
router.on('route:home', function(){
alert("1");
userList.render(),
editUser.render({});
});
router.on('route:editUser', function(id){
userList.render();
editUser.render({id: id});
});
//NECESSARY
Backbone.history.start();`
どんな助けでもいただければ幸いです!
ありがとう!