ember按名称约定自动获取

时间:2017-12-17 12:08:17

标签: ember.js ember-data ember-cli

我正在构建一个智能手机应用程序来学习余烬。用户得到了有房间等的家庭。当我点击一个用户时,我想要显示他的家庭,之后我想点击一个家庭来显示该家庭中的所有房间。我的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从未被调用过。

0 个答案:

没有答案