我正在使用Backbone.js進行涉及很多不同視圖的應用程序,其中一些嵌套其他視圖,而這些其他視圖可以進一步嵌套其他視圖。我應該在哪裏使用模板,我應該在哪裏編程生成視圖對象?
還可以查看錶現取決於模型中的某些屬性,例如,如果用戶已經通過認證只顯示一些內容,或者另一種類型的,如果檢查
從Adobe的Flex的世界的到來,我習慣使用標記甚至是深度嵌套或複合標記來幾乎完全地聲明我的視圖。 Flex使得標記中的組件聲明變得小菜一碟。
我有點希望我能達到同樣的那種純粹的觀點介紹和骨幹視圖邏輯之間的分離,但到目前爲止,我一直在與掙扎。
這樣做的原因是,我無法設法僅使用模板聲明覆合視圖。因此,我不得不求助於使用BB的render()方法來實例化子視圖並將它們附加到父視圖。這沒關係......但如果視圖變得非常精細,那麼使用JS聲明它是一種矯枉過正的行爲,因爲我從字面上最終會追加純HTML字符串,這完全是一團糟。這意味着對這些模板使用模板會更好,然後只是渲染模板而不是使用JS來完成所有的工作。
使用這兩種方法只是打破了應用程序中的任何一致性,但我強迫自己做得很好,因爲我已經閱讀了很多(甚至是專業編寫的)主幹代碼,而且我看到其他人正在努力一樣的東西。
如果我不能避免這種分離的渲染方法,那麼至少我將不得不把任何特定的界線,這些意見應與模板進行渲染,並沒有,或者只是部分。問題是這些標準是什麼。
但是你總是最終在render()方法中粘貼父視圖和它們的子視圖,就是說,你不僅要抓取模板並渲染它們,還要做醜陋的追加內容。這是我真的從Flex中錯過的,因爲在那裏,只使用標記定義所有視圖/子視圖,爲它們提供適當的數據,添加事件處理程序等等等等非常簡單。 – user802232
如果你不需要「追加」不想。例如,在我的許多「頂級」視圖中,視圖只是呈現「腳手架」html(保存在模板中)。 scaffold html有許多元素,我把它們作爲他們的'el'傳遞給子視圖。子視圖然後附加到該元素。 所以,那些父視圖不會$ .append()任何東西。 我想我不確定你的意思是「醜陋的追加東西」 –