所以我一直在使用基本的Backbone.js创建一个简单的演示页面,这是一个基本的用户管理器。无论是创建(POST)还是更新(PUT)用户信息,我都运行相同的功能。 POST和PUT请求都成功(I.E.调用我的“成功”函数),但只有PUT命令会触发路由器,POST请求不会触发相同的代码行,而会触发成功功能。Backbone.js路由器触发投入,而不是后
以下是我的活动代码。 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();`
任何帮助,将不胜感激!
谢谢!
你有没有试过在你的saveUser函数上做一个console.log(回复),并且看到它在执行POST时返回的内容? –
“POST请求不会触发相同的代码行,但会触发成功功能。”我很困惑。所以如果在'success'回调中添加'console.log(“Hi!”);',你会得到“嗨!”在POST和PUT上? – Lukas
我试过控制台日志记录,Lukas是正确的。它成功登录控制台,但实际上并未触发路由器。 :/ – MelArlo