Backbone和Codeigniter - 路由问题

时间:2014-03-13 14:59:51

标签: php codeigniter backbone.js

我有同样的问题,就像在这里问Routing problems with Codeigniter and Backbone.js - 那么,是否有一个现有的例子如何解决这个问题?如何以及在何处调整我的代码?我如何转储Codeigniters View部分,让Backbone像建议一样完成MV部分?

提前致谢...

[UPDATE] 因此,在查看Catch-all Controller/Route后,在我的application->config->routes.php我必须添加:

$route['(:any)'] = 'catchall_controller'

另外是$route['default_controller'] = "main"还是代替?

然后在我的主控制器中我必须这样做或什么?:

class Main extends CI_Controller {

   public function index()
   {
    $this->uri->segment(n);
    $this->load->view('home');
   }

}

最后删除我的Backbone App中的pushState:true,然后说:

 Backbone.history.start({root: App.ROOT });

这是正确的吗?

1 个答案:

答案 0 :(得分:0)

您的问题来自您使用pushState的事实。从文档(http://backbonejs.org/#History):

  

请注意,使用真实网址需要您的网络服务器能够   正确呈现这些页面,因此需要进行后端更改   好。例如,如果您的路线为/ documents / 100,则表示您的网站   如果浏览器访问该URL,则服务器必须能够提供该页面   直接

所以你的选择基本上是:

  • 停止使用pushState Backbone.history.start({ root: App.ROOT });
  • 让您的服务器返回有效的响应您的Backbone应用程序可以生成的每个 URL(请参阅 Catch-all Controller/Route) 您遇到了问题,因为您的客户端应用程序正在生成您的serever不知道如何处理的网址=> 404错误

另见Backbone router: Use hashbangs