使用Codeigniter和Backbone.js路由问题

时间:2013-03-25 14:35:25

标签: .htaccess backbone.js requirejs codeigniter-2

以下是我使用的框架:

  • Codeigniter REST API
  • Require.js
  • Backbone.js的

运行应用

  • htaccess文件通过Codeigniter index.php文件重定向所有内容。
  • Codeigniter中有一个默认路由设置,用于调用“Start”Controller。
  • Start Controller调用Start View(Codeigniter中唯一的视图)。
  • “开始视图”保存整个网站的模板,并调用启动Require.js
  • Require.js启动Backbone,app按预期工作。

问题:路由到其他骨干视图:

  • 现在我想通过Backbone路由到其他Backbone“视图”。
  • 问题是,当我尝试在HREF中提供类似“localhost / otherPage”的链接时,htaccess文件会触发,而Codeigniter会尝试找到该控制器,并且我会获得Codeigniter生成的404.
  • 我尝试使用`app.navigate(“otherPage”,{trigger:true})强制使用Backbone中的路由而不是HREF;`,但我得到了Codeigniter生成的相同的404错误。

我应该采取什么方向:

  • 我想继续使用Codeigniter来实现其RESTFUL API,模型和一些特殊的验证功能。
  • 我也想在前端使用Backbone和Require。
  • 我可以将htacess重定向更改为启动Require和Backbone的index.html文件。如果我使用这种方法,Codeigniter RESTFUL API控制器是否仍会正常启动?
  • 我是否在Codeigniter中为每个页面创建一个视图,并让每个页面为每个视图启动一个新的Require + Backbone?
  • 我很快就会调查Node.js。我是否应该删除框架的Codeigniter方面,并在Node.js上进行全面讨论?

非常感谢任何指导。

2 个答案:

答案 0 :(得分:3)

如果您还没有这样做,您可能希望通过主干通过主题标签更改路由(这是他的正常行为,pushState:false),因为修改主题标签绝不会导致服务器调用,因此忽略Codeigniter的路由器。
在您的示例中,您可能希望导航到 localhost /#otherPage 然后使用Codeigniter的路由器进行ajax REST调用。

答案 1 :(得分:1)

让您的浏览器不使用HREF链接提交http请求的另一种方法是使用javascript和jquery覆盖它。如果您不想像Loamhoof所建议的那样总是使用主题标签,那么可能会很有用。

示例:

$('#linkID').on('click', function(event) {

    event.preventDefault();

    backboneRouter.navigate($(event.currentTarget).attr('href'), { trigger:true });

});