Backbone js pushState给出了无法获取错误

时间:2016-02-26 18:05:16

标签: javascript backbone.js pushstate

意识到在同一个问题上存在很多问题,但没有一个问题有效。已经尝试过设置pushState true和hashChage false但每次路由都给我无法获取错误。这是我的路线文件

var appRouter = Backbone.Router.extend({
 routes:{
    "login":"login"
 },
 login:function () {
  var LoginView = Backbone.View.extend({
      initialize: function () {
          this.render();
      },
      render: function () {
          var that = this;
          $.get('templates/login.html', function (data) {
              template = _.template(data, {});
              that.$el.html(template);
          }, 'html');
      }
   });
   var loginView = new LoginView({ el: $("#test") });
 },
});
var sys = new appRouter();
Backbone.history.start({pushState:true});

2 个答案:

答案 0 :(得分:0)

您的HTML override func tearDown() { super.tearDown() // Would like an if statement here to update my logs but not sure how to detect the state if fail { log.update("failed") } else if !fail { log.update("success") } }

中是否有链接?

您的浏览器将转到此网址。

你需要防止这种情况发生。

阅读this questiontop answer以获得解决方法。

  

这很有效。但是,当我刷新页面或直接点击URL时,它会抛出相同的错误。有什么方法可以解决这个问题吗?

是的,但它需要您对Web服务器进行更改。

如果您可以添加重写规则,您可以查找不存在的URL并假设它们是推送状态生成并返回您的根页。

如果没有看到应用程序的更多细节,很难说最佳解决方案是什么。

答案 1 :(得分:0)

正如Adrian建议的那样,它解决了ContentView标记点击请求的问题。可以通过修改您的htaccess文件来解决直接网址命中和页面刷新错误,如Adrian所建议的那样。在我的情况下,我已将gruntfile.js文件修改为here