2011-10-23 29 views
1

我正在創建一個web應用程序,其中用戶創建一個物品清單,並使用文件夾對它們進行分類。現在假設我有兩個文件夾是這樣的:骨幹:如何在導航到路線時處理視圖/模型?

  • 所有項目(路徑:/)
  • 壁櫥項目(路線:#獲取/衣櫃/ ID)

當我這些路線之間導航,我想要處理在之前的路線中呈現的模型。我該怎麼做,在哪裏做?當我導航到可以執行此操作的新路線時是否會觸發事件?

回答

4

有很多方法可以解決這個問題,這取決於您如何進行導航。如果您使用實際鏈接更改路線,或者使用router.navigate(),則router將調度您可以偵聽的route:<route name>事件,並在傳遞給路由功能時將相同的參數傳遞給處理程序。

在什麼結果是它只需多長時間才能建立測試用例代碼骨幹示範,我讓你的jsfiddle來說明這種方法:http://jsfiddle.net/nrabinowitz/ZrgJF/7/

很多,這只是設置代碼;對於這個問題的重要的部分是路由器:

var MyRouter = Backbone.Router.extend({ 
    routes: { 
     'view/:id' : 'openView' 
    }, 
    openView: function(id) { 
     app.openView(id) 
    } 
}); 
router = new MyRouter(); 

和視圖,結合遣返路線:

var MyView = Backbone.View.extend({ 
    initialize: function(opts) { 
     this.id = opts.id; 
     router.bind('route:openView', this.dispose, this); 
    }, 
    // id is the same as the route argument 
    dispose: function(id) { 
     if (id != this.id) { 
      this.remove(); 
     } 
    } 
    // etc 
});