2012-01-09 137 views
0

有不同的方法來調用路由。我目前在我的視圖函數中使用Router.navigate('/ url',true)來觸發一個路由,但似乎也可以通過帶有URL哈希值的錨點標籤作爲href屬性來觸發路由。在backbonejs中觸發路由的最佳方式是什麼?

我想將一個集合渲染到屏幕上的方式也與它有關。我有一個全局的'索引'視圖,爲集合中的每個項目提供一個新的子視圖。

render : function() { 
     var self = this; 

     $(this.el).html(_.template(this.template, {})); 

     this.collection.each(function(model) { 
      self.addOne(model); 
     }); 
    }, 

    addOne : function(model) { 
     var project = new TMRS.views.projects.Record({ model : model }); 

     $(this.el).append(project.render().el); 
    }, 

在子視圖中,當點擊一個特定的元素時,它會觸發一個路徑,它的工作原理很簡單。 但是,當我決定使用哈希值的錨時,不再使用子視圖,因爲我可以迭代我的模板中的集合,並使用錨標籤處理網址。

我認爲最好對每個記錄使用一個視圖,但我不知道它是否是要走的路。你們有什麼感想?

回答

1

我在我的骨幹項目中遇到了同樣的問題。我認爲這一切都歸結爲可擴展性。你有沒有看到子視圖需要變得更復雜?如果是這樣,那麼繼續保留子視圖會更好。如果你選擇了模板解決方案,那麼只需要重新創建子視圖並重新連線即可,如果你需要比錨點更復雜的東西。

在我的項目中,我做了下拉菜單的模板迭代。他們永遠不會變得更加複雜。 (最有可能的)。

大部分其他事情我繼續做子視圖,以便在稍後需要時不必執行那項工作。此外,實施並不需要很長時間。

這是我的2美分,但我真的不認爲有錯誤的方式。

+0

你的回答很有道理!就在今天,我決定讓子視圖做更復雜的事情,所以我會去與子視圖。 – Jacob 2012-01-10 21:15:35

+0

很高興幫助!祝你的骨幹項目順利:D – Mike 2012-01-10 21:19:59

相關問題