在應用程序中,我們允許用戶創建與現有記錄相關的新記錄。爲了實現這一目標,我們使用的行爲是這樣的:將未保存的記錄傳遞給Ember.js路由
createUser() {
var route = this;
var model = this.store.createRecord('user', {
client: route.modelFor('client'),
});
route.transitionTo('user.update', model);
},
的user.update
路線呈現一個user-form
組件,使用在過渡傳遞模型。同樣的路線也被用來更新現有的用戶。
這種方法的問題如下;當刷新頁面時,由於路徑在查詢商店時無法找到相應記錄(此時URL爲/users/null/update
),頁面錯誤。理想情況下,我會在URL中傳遞客戶端(或client.id)參數,以便:
- 頁面可以重新加載而不會出現問題。
- 與用戶關聯的客戶端設置正確。
我該如何在Ember.js中實現?我知道這可以很容易地使用嵌套路由(通過在客戶端路由中嵌套user.update路由)來完成,但這在視覺上沒有意義。
路由器的相關部分如下:
this.route('clients');
this.route('client', {path: 'clients/:id'}, function() {
this.route('users');
});
this.route('user', {path: 'users/:id'}, function() {
this.route('update');
});
所有我在用戶做/ update.hbs模板{{user-form user=model}}
您可以發佈您的路由器,幷包含用戶表單組件的模板文件? –