2011-07-05 71 views
2

我正在重構一箇舊應用程序backbone.js這是backbone.js MVC模式的正確實現嗎?

當通過TodoList tuto時,但我仍然不確定如何一切應該在一起。

現在,我有:

  • 被初始化一個GlobalController,它處理全球應用範圍的路由&其他對象的初始化。

  • GlobalController初始化GlobalAppView(全球應用範圍的行動,想怎麼處理Ajax點擊)之後&,在我的應用程序中的所有其他控制器。

  • 放入系統控制器,像TagController,初始化它自己的集合,(一個BlueTagList &一個RedTagList延伸的App.TagList集合),將存儲在window命名空間(它應該是在控制器中的命名空間?)。

  • 然後,控制器在我的意見的地方叫,TagsController->render('BlueTagListView', {el: '#container', collection : BlueTagList, data : ...});

有沒有在該方案中的任何流? 謝謝。

回答

1

就我個人而言,我認爲如果Backbone.js稍微改名一些,事情會變得更加清晰。

Models  -> Models 
DOM subtrees-> Views (view.el in the backbone case) 
Views  -> Controllers 
Controllers -> HashchangeController (A specialized type of controller) 

Backbone.js是一個MVC框架,但它只是命名約定有點奇怪。這意味着你必須使用Backbone.Controller,否則你只會做一個Model/View。但不要感到有壓力這樣做。

構建一個沒有Backbone.Controller的應用程序是完全可以的,除非你真的需要可加入書籤的鏈接。如果你確實酷,但它不是絕對必要的。 URL欄只是頁面上的另一個小部件,您可以編寫控制器來響應。

也許考慮一下你的組件會讓你更容易。

+2

奇怪的是昨天發佈了一個Backbone.js的新版本,並且所有者通過將Controller重命名爲Router來做出了重大更改。顯然其他人也有同樣的觀察。 – bradgonesurfing

相關問題