我正在构建一个智能手机应用程序来学习余烬。用户得到了有房间等的家庭。当我点击一个用户时,我想要显示他的家庭,之后我想点击一个家庭来显示该家庭中的所有房间。我的Router.js看起来像这样:
Router.map(function() {
this.route('about');
this.route('users', function() { //Lists all the users, URL looks like /users
this.route('single', { path: '/:user_id' }, function() { //Actually i did not use this route
this.route('households', function() { ;// Shows all households a user with user_id has, URL looks like /users/123/households
this.route('single', { path: '/:household_id' }, function() { // Shows a single household, URL looks like /users/123/households/456
this.route('rooms', function() { // Shows all rooms a household with household_id has, URL looks like /users/123/households/456/rooms
this.route('single', { path: '/:room_id' }, function() {
this.route('devices', function() {});
});
});
});
});
});
});
});
如果我拨打{{#link-to "users.single.households" user.id}}
,则会调用路由households
。这可以。在此路线中,我需要访问user.id
。这是在household-route
模型钩子中使用以下语句。
var parentModel = this.modelFor('users.single');
完整路线:
import Route from '@ember/routing/route';
export default Route.extend({
model(){
console.log('household route');
var parentModel = this.modelFor('users.single');
return Ember.RSVP.hash({
user: parentModel,
household: this.get('store')
.findAll('household')
.then(results => results
.filter((site) => {
return site.get('member')
.filter(x => x == parentModel.id)
.length > 0;
})
),
});
}
});
现在我对名称约定或自动数据提取感到惊讶。我的孩子路线users.single
从未被召唤过。据我所知,这是因为命名约定user_id
。为了从海市蜃楼服务器列出我的数据,这很好,但我想了解它的工作方式。
我认为必须可以将user_id
更改为useridnumber
。但是当我这样做时:
this.route(‘single’, { path: ‘/:useridnumber’ }, function() {
我的路线user.single
甚至从未被调用过,我的数据列表也无效。
我真的无法弄清楚为什么我的路线user.single
从未被调用过。