Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 浏览器&x27;s后退按钮打断我的主干/木偶应用程序_Javascript_Backbone.js_Marionette_Backbone Routing - Fatal编程技术网

Javascript 浏览器&x27;s后退按钮打断我的主干/木偶应用程序

Javascript 浏览器&x27;s后退按钮打断我的主干/木偶应用程序,javascript,backbone.js,marionette,backbone-routing,Javascript,Backbone.js,Marionette,Backbone Routing,我正在用主干网和木偶网构建一个web应用程序,服务器上有RubyonRails 该应用程序工作得很好,除了back browser(FF、Chrome、IE11)的back按钮打破了一切 下面是一个重现问题的非常简单的示例: var TestApp=新的木偶.Application(); TestApp.addRegions({ 主区域:“主区域” }); TestApp.navigate=功能(路线、选项){ 选项| |(选项={}); 主干。历史。导航(路线、选项); }; TestApp

我正在用主干网和木偶网构建一个web应用程序,服务器上有RubyonRails

该应用程序工作得很好,除了back browser(FF、Chrome、IE11)的back按钮打破了一切

下面是一个重现问题的非常简单的示例:

var TestApp=新的木偶.Application();
TestApp.addRegions({
主区域:“主区域”
});
TestApp.navigate=功能(路线、选项){
选项| |(选项={});
主干。历史。导航(路线、选项);
};
TestApp.getCurrentRoute=函数(){
return.history.fragment
};
TestApp.on(“开始”,函数(){
if(主干网历史){
Backbone.history.start();
if(this.getCurrentRoute()=“”){
这个。导航(“foo”);
TestApp.MyApp.Show.Controller.ShowFoo();
}
}
});
TestApp.module(“MyApp”,函数(App,TestApp,主干,木偶,$,){
App.Router=marionete.AppRouter.extend({
批准:{
“foo”:“ShowFoo”,
“酒吧”:“展示酒吧”,
“baz”:“ShowBaz”
}
});
变量API={
ShowFoo:function(){
App.Show.Controller.ShowFoo();
},
显示栏:函数(){
App.Show.Controller.ShowBar();
},
ShowBaz:function(){
App.Show.Controller.ShowBaz();
}
};
TestApp.addInitializer(函数(){
新应用程序。路由器({
控制器:API
});
});
});
TestApp.module(“MyApp.Show”,函数(Show,App,主干,木偶,$,)
{
Show.whoolayoutview=Backbone.marionete.LayoutView.extend({
模板:“#模板foo”,
标记名:“span”
});
Show.BarLayoutView=Backbone.marionete.LayoutView.extend({
模板:“#模板栏”,
标记名:“span”
});
Show.BazLayoutView=Backbone.marionete.LayoutView.extend({
模板:“#模板baz”,
标记名:“span”
});
var ContactsShowController=木偶网.Controller.extend({
ShowFoo:function()
{
this.fooView=new Show.doubayoutview();
App.mainRegion.show(this.fooView);
},
显示栏:函数()
{
this.barView=new Show.BarLayoutView();
App.mainRegion.show(this.barView);
},
ShowBaz:function()
{
this.bazView=new Show.BazLayoutView();
App.mainRegion.show(this.bazView);
}
});
Show.Controller=新联系人Show Controller;
});
$(函数(){
TestApp.start();
});
测试浏览器的后退按钮。

F O O

B A R

B A Z

按浏览器上的“后退”按钮。您应该返回到工具栏,但视图未显示。


更新:根据评论,很明显,罪魁祸首是OP的rails安装附带的一个附加组件

我建议他删除项目中的
rails/turbolinks
library,因为这似乎会干扰页面的正确重新加载


对代码进行了修改,并包含了与您发布的相同的库。我什么都没改变,它就像魔术一样

我还使用了
jquery2.1.0
您的版本是什么?
请参阅。

谢谢您的回复,但这对我没有帮助。您的小提琴很好用。我将jQueryRails更新为4.0.3版,现在在我的application.js中使用jquery2,即jquery2.1.3。如果我执行bundle list,它会给我这个,下面是完整的代码:我不知道这个文件托管网站,所以我希望它工作得很好。。。我执行了rakeassets:clobber和rakeassets:precompile,清除了浏览器的缓存,使用了另一个浏览器。什么都不管用:(,我的队友运气不好。当我回去时,url和主区域都显示正确,但主区域在半秒钟后被清除。PS:为什么stackoverflow上的评论这么小?我不得不将我的评论分成3加一个文件…w/e谢谢我的防病毒软件不会让我从你提供的文件宿主网站下载文件。我建议您在GitHub上安装项目。调试器控制台中是否有错误?请注意,请参阅文档:。这可能会弄乱您的链接。您可以通过执行类似于