2011-02-23 85 views

回答

-2

您不應該使用DOM元素通過後端數據初始化您的模型。你有一個非常好的骨幹基礎設施,不這樣做。當你依賴於DOM時,當DOM結構由於例子設計而改變時,你需要改變你的javascript。

也不要依賴骨幹視圖來創建模型。它必須走另一條路,模型決定頁面上的視圖。

只需添加一個腳本元素並直接在那裏創建您的JS對象。您可以初始化集合,單一模型等

你可以做模板或DOM UI積木一樣的:

<script type="text/js-template"> 
    <!-- Your template as realy do elements or using a js templating engine like _.template--> 
</script> 

載入您的網頁,讓你的應用程序在本地播放。

+0

在我看來,不使用DOM的一個缺點是在初始數據加載時缺乏搜索引擎支持。 – UpTheCreek 2011-09-12 08:07:28

+0

不正確。我所說的不是在你的JS中加載基於你的dom的數據。您將頁面上的數據加載爲JSON(在標題,正文或其他內容中)。你的第一個加載的dom應該都在那裏,你的js代碼只需要連接它並保持它與模型的最新版本。 – Julien 2011-09-12 14:19:27

+0

所以數據在兩個地方呈現在服務器端? (一次在dom中,一次在腳本中爲JSON) – UpTheCreek 2011-09-13 03:53:43

6

骨幹可以很好地處理。我處理這種情況的方式是有一個工廠模型,它可以接收DOM節點並解析它以提取數據(id,字段等)。

如果您向View constructor提供'el'選項,主幹將不會獲取或渲染模型,因此您可以保持原樣。

數據發生變化後,控制器將同步到服務器。你必須小心,儘管包含你的應用程序需要的任何數據來顯示或不顯示。

+4

http://documentcloud.github.com/backbone/#FAQ-bootstrap 它們在渲染模板服務器端時執行一系列將模型序列化爲json的巧妙小技巧。我真的可以去任何一種方式。 – 2011-02-24 00:50:21

+1

@Arthur,這很有趣。您能否詳細瞭解如何將DOM中的數據提取到模型中? – UpTheCreek 2011-09-12 08:17:01

+2

@Arthur,我同意這很有趣。我無法找到任何人在使用JS MVC框架來做這種事情的博客,儘管對我來說,處理網站開發很有意義,但我想知道爲什麼沒有其他人在做這件事。基本上我不想使用單頁面應用範例。 – JonB 2013-02-01 14:31:21