Javascript 如何在ajax调用中执行控制器方法?
在木偶网或主干网中,在导航字段中更改url时执行路由。有没有办法在ajax调用中执行路由 如果您想触发路线更改,可以执行以下操作,但不建议这样做:Javascript 如何在ajax调用中执行控制器方法?,javascript,backbone.js,marionette,Javascript,Backbone.js,Marionette,在木偶网或主干网中,在导航字段中更改url时执行路由。有没有办法在ajax调用中执行路由 如果您想触发路线更改,可以执行以下操作,但不建议这样做: yourRouterInstance.navigate("your_url_that_is_mapped",{trigger:true}); 相反,您需要将路线导航、数据加载和视图创建解耦,并实现相同的效果 创建一个控制器JS对象 使用主干.Events扩展此对象 var AppController = _.extend({},Backbone.E
yourRouterInstance.navigate("your_url_that_is_mapped",{trigger:true});
相反,您需要将路线导航、数据加载和视图创建解耦,并实现相同的效果
主干.Events扩展此对象
var AppController = _.extend({},Backbone.Events);
3.1每种方法都将通过所需的
ajax
加载适当的数据。3.2创建适当的
视图的实例
3.3将加载的数据传递给视图的实例
3.4调用导航
方法并将url更新为适当的url
AppController.on("any_custom_event",function(payload) {
// MAKE THE AJAX CALL.
// AFTER SUCCESSFUL CALL INSTANTIATE THE VIEW AND PASS THE DATA .
// CALL yourAppRouter.navigate("your_current_url",{trigger:false});
});
//in router callbacks
AppController.trigger("any_custom_event",payload);
// In other places where required like inside an ajax success call back:
AppController.trigger("any_custom_event",payload);
从主干文档: 导航 router.navigate(片段,[选项]) 每当您在应用程序中到达要另存为URL的点时,请调用导航,以更新URL。如果还希望调用路由功能,请将触发器选项设置为
true
。要更新URL而不在浏览器历史记录中创建条目,请将“替换”选项设置为true
因此,在ajax回调中,您可以执行以下操作:
$.ajax({
success: function () {
app.navigate('path/to/your/route', {trigger: true})
}
})
或者使用本机JS(在任何地方都支持),您可以自己更改哈希:
$.ajax({
success: function () {
window.location = '#your/route/path/';
}
})
这也将触发路由路径
这两种解决方案都将在浏览器的历史记录中保存路线