2014-03-13 100 views
0

我有同樣的問題,就像這裏詢問Routing problems with Codeigniter and Backbone.js - 那麼,有沒有現成的例子如何解決這個問題?我如何以及在哪裏調整我的代碼?我該如何轉儲Codeigniters View部分,讓Backbone像完成建議那樣完成MV部分?骨幹和Codeigniter - 路由問題

在此先感謝...

[更新] 所以,看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'); 
    } 

} 

最後刪除pushState:true在我的骨幹應用程序,所以它說:

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

這是正確的?

+0

您是否在啓動Backbone.history時使用'pushState:true'? –

+0

是的,我的main.js文件包含'Backbone.history.start({pushState:true,root:App.ROOT});' – SHT

回答

0

您的問題來自您使用pushState的事實。從文檔(http://backbonejs.org/#History):

注意,使用真實的URL需要你的Web服務器能夠 正確渲染那些頁面,因此後端改變是必需的 好。例如,如果您的路由爲/ documents/100,則如果瀏覽器直接訪問該URL ,則您的網絡服務器必須能夠提供該頁面。

那麼你的選擇基本上是:

  • 停止使用pushState的Backbone.history.start({ root: App.ROOT });
  • 讓你的服務器返回 URL您的主幹應用程序可以生成一個有效的迴應(見 Catch-all Controller/Route) 你」重新遇到問題,因爲您的客戶端應用程序正在生成您的服務器不知道如何處理的URL => 404錯誤

另請參見Backbone router: Use hashbangs

+0

好的,有沒有一個實際的例子來說明如何實現這個? – SHT

+0

我已經用資源更新了我的答案。 –

+0

我已經更新了我的問題... – SHT