2013-03-21 118 views
0

我有一個複雜的,多級別繼承的應用程序,我想使用Backbone.Router進行導航,但它不工作,因爲我的預期。骨幹路由器初始化但不要觸發事件

應用程序的地址不是根目錄

篩選下: http://www.domain.com/App

,我想用BB的路由

下面是一些代碼:

$(function() { 
    var SayfaController = Backbone.Router.extend({ 
     routes: { 
      "": "home", 
      "sayfa/:sayfaNo": "sayfa" 
     }, 
     initialize: function() { 
      console.log('THIS WORKS'); 
     }, 
     home: function() { 
      console.log('THIS DONT FIRE'); 
     }, 
     sayfa: function (sayfa) { 
      console.log("NEITHER THIS FIRES"); 
      console.log(sayfa); 
     } 
    }); 

    var sayfaController = new SayfaController(); 

    Backbone.history.start({pushState: true}); 

    .... 
}); 

初始化方法有效,但是 個事件慣於火當我點擊這樣的鏈接:

<a href="http://www.domain.com/App/#/sayfa/6">Click</a> 

或更改瀏覽器的導航欄

我在做什麼錯

+0

與你的鏈接出現404錯誤給應用 – kinakuta 2013-03-21 15:19:15

+0

@kinakuta這是一個例子:) www.domain.com是不是我的:) – Lupus 2013-03-21 15:22:04

+0

是'編輯器'的初始頁面?如果索引頁面是「http:// www.matbuu.bizim /」,那麼當運行這個URL被訪問時,home將運行。當'http:// www.matbuu.bizim#sayfa/123'時會運行'sayfa'。除非你在使用## – ashley 2013-03-21 15:22:23

回答

0

你需要一個初始化函數?這可能會取代路由器的主幹設置,這可能是爲什麼其他功能/視圖未觸發。

+0

我不認爲會崩潰的骨幹,但我試過...沒有變化 – Lupus 2013-03-21 15:32:14

0

從一眼,看起來您需要指定應用程序的根目錄,因爲它不是從您的域的根目錄提供的。見骨幹文檔RE:Backbone.history:

如果您的申請不被從根網址服務/您的 域的,一定要告訴歷史根源在哪裏還真是,作爲一個 選項:骨幹。 history.start({pushState的:真實,根: 「/公/搜索/」})

嘗試Backbone.history.start({pushState: true, root: "/App/"});

+0

nop ...我之前嘗試過。不用找了。 – Lupus 2013-03-21 15:47:52

0

我不知道如何得到它的那種

網址的工作
http://www.domain.com/App/#/sayfa/6 

但是,它下面的種類起作用。

http://www.domain.com/App#sayfa/6 
http://www.domain.com/App 

使用

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

這裏是的jsfiddle http://jsfiddle.net/nEmeL/4/