所以我一直在使用基本的 Backbone.js 创建一个简单的演示页面,它是一个基本的用户管理器。无论是创建(POST)还是更新(PUT)用户信息,我都会运行相同的功能。POST 和 PUT 请求都成功(IE 调用我的“成功”函数)但是只有 PUT 命令会触发路由器,POST 请求不会触发同一行代码,而它会触发成功函数。
下面是我的事件代码。saveUser 函数同时处理 PUT 和 POST 请求,但成功的路由器仅从成功的 PUT 请求触发,而不是从成功的 POST 请求触发(即使两者都成功更新数据库)。
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();`
任何帮助,将不胜感激!
谢谢!