這可能聽起來像一個迂腐的問題。對不起:)EmberJS中「持久狀態」的定義範圍是什麼?
我有這樣的情況下......這是我的路由器定義:
Router.map(function() {
this.resource('gobernadores', { path: '/gobernadores' }, function() {
this.resource('gobernador', { path: '/:id_estado' }, function() {
this.route('simulacion', { path: '/simulacion' }),
this.route('info', { path: '/info' })
})
});
this.route("login");
this.route("bienvenido");
});
在「gobernadores」的路線,我有各省的名單。你可以看到它是一個嵌套的佈局。在同一頁面中,我們展示了當前選定的省份(這是gobernador路線)。在那個gobernador路線的模板裏,我有一個標籤,包含兩個元素......,一個顯示路線「simulacion」,另一個顯示路線「info」(該省)的模板。
現在,問題:當用戶從一個省跳到另一個省(通過點擊屏幕左側的導航菜單),我想保留在內存中,每個省都選擇當前選項卡。
因此,如果用戶目前正在看到省X的模擬結果,然後他點擊鏈接到Y省(他將在Y省顯示「信息」),然後他回到X省,我想讓應用程序將用戶帶回到他所看到的屏幕(X省的模擬)。
您不能將該信息存儲在控制器(GobernadorController)中,因爲我可以看到控制器無法保持狀態,它是無狀態的。
所以......,我要這些信息進入途徑(GobernadorRouteModel)的模型......
我的疑問:是它好嗎?爲什麼我懷疑?由於這樣的:http://emberjs.com/guides/concepts/core-concepts/
它說:
模型
模型是存儲持久狀態的對象。模板 負責將模型顯示爲 HTML。在很多應用程序中,模型都是通過HTTP JSON API加載的, 雖然Ember不知道您選擇的後端。
ROUTE
路由是一個對象,它告訴模板哪個模型它應該 顯示。
這個GobernadorRouteModel不是我堅持在後端。我無意這樣做。那麼,我是否違反了一個好的EmberJS應用程序的一般建議?
換句話說:「持久性」在這裏並不一定意味着「你保存到DB中的東西」,對吧?這只是「你想要保留的東西......,只是在應用程序會話期間,在內存中」。
由於提前, 拉嘎
噢,我明白了......而不是將「選定的選項卡」作爲路線模型的屬性,我應該將其作爲路線的直接屬性,對吧? – 2015-02-23 18:24:53
或者......就像你說的那樣,映射(省 - > selectedTab)是該單身控制器的一個屬性。 – 2015-02-23 18:38:15
是的,其中任何一個都可以。看起來Ember 2.0的做法是在路線上擁有該屬性,然後使用操作對其進行更改。 – GJK 2015-02-23 19:40:05