3 回答

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超8個(gè)贊
我認(rèn)為這里的model要分兩個(gè)方面來(lái)看:
一類為業(yè)務(wù)模型,你舉例中的圖表就是一種業(yè)務(wù)模型,select的數(shù)據(jù)也是一個(gè)業(yè)務(wù)模型(如果它不只是簡(jiǎn)單前端生成的時(shí)間); 一類為視圖模型,即view-model(backbone沒(méi)有view-model,可以通過(guò)backbone插件,也可直接寫在view類上),一般呈載頁(yè)面的一些狀態(tài)和需要顯示的項(xiàng)目,比如一些控件現(xiàn)在是展開還是閉合。
拿到頁(yè)面要看需要哪些業(yè)務(wù)模型,這些模型并非只用于這一個(gè)頁(yè)面,他是由你的業(yè)務(wù)決定的。一個(gè)頁(yè)面可能只使用一個(gè)模型,也可能使用多個(gè)模型,可以理解成一個(gè)頁(yè)面由一個(gè)動(dòng)態(tài)程序輸出,但查詢了多張表獲取數(shù)據(jù)。按你的例子,select中的數(shù)據(jù)可以對(duì)應(yīng)一個(gè)model,圖表可以是一個(gè)model, select的通過(guò)自己的model渲染,然后修改時(shí)通知圖表的model fetch新數(shù)據(jù),然后圖表的view因?yàn)閙odel的change而重新渲染。

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超4個(gè)贊
Backbone 的 Model 主要功能是用 RESTfull 的方式實(shí)現(xiàn)和后端 API 的通信。
View 則負(fù)責(zé)顯示 Model/Collection 里的數(shù)據(jù),來(lái)完成渲染。也可以監(jiān)聽 Model/Collection 的變化,重新渲染。
因此,我覺(jué)得并不應(yīng)該以界面做為設(shè)計(jì) Model 的考量。你說(shuō)的日期選擇器和某種圖表,具體實(shí)現(xiàn)的方式也有很多,比如:
直接用參數(shù)或事件的形式傳給顯示圖表的 view 的渲染方法,渲染方法里有對(duì)日期進(jìn)行處理的邏輯,這樣其實(shí)是沒(méi)有用到 Model 的。
再比如使用一個(gè) Model/Collection 做為圖表數(shù)據(jù)的載體,設(shè)定事件讓日期選擇器更新 Model/Collection ,圖表的 View 監(jiān)聽這個(gè)變化重新渲染圖表。
Backbone 是相對(duì)靈活的框架,需要自己根據(jù)自己的需求,來(lái)進(jìn)行合理的設(shè)計(jì)。

TA貢獻(xiàn)1982條經(jīng)驗(yàn) 獲得超2個(gè)贊
這個(gè)是根據(jù)后端的接口來(lái),如果要用model.后端要實(shí)現(xiàn)restful接口,你只要與后端模型一一對(duì)應(yīng)就好了,這叫對(duì)象關(guān)系映射,比如用戶,就有一個(gè)UserModel.
添加回答
舉報(bào)