1

这很难用一个问题来表达,但希望我的 JSON 能帮助解释。

var lodges = [
    {
        id: 1,
        lodgesName: 'Matt\'s Awesome Lodge',
        lodgeOwnersName: 'Matthew D',
        lodgeStreetAddress: '5555 J lane',
        lodgeCity: 'Salt Lake city',
        lodgeZip: '11111',
        lodgeState: 'Utah',
        favorites: [
            {
                id: 1,
                lodge_id: 2
            }
        ]
    },
    {
        id: 2,
        lodgesName: 'Some Historic Lodge',
        lodgeOwnersName: 'Santa Claus',
        lodgeStreetAddress: '1 Clearwater Road',
        lodgeCity: 'Grand Marais',
        lodgeZip: '55555',
        lodgeState: 'Minnesota',
        favorites: [
            {
                id: 1,
                lodge_id: 1
            }
        ]
    }
];

这是我的模型,包含两个小屋。我想使用数组lodge_id中的访问每个旅馆中的收藏夹,以获取具有关联旅馆 ID 的 。示例:每个旅馆所有者都有一个他/她“最喜欢”的旅馆列表。我想查看他们收藏的标题列表。在这个提供的示例中,他们互相喜欢。favoriteslodgesName

我的路线是:

App.Router.map(function() {
  this.resource('lodges');  
  this.resource('lodge', {path: '/lodge/:lodge_id'}, function() {
    this.resource('favorites', function() {
        this.route('new');
    });
  });
});

我试图弄清楚一切是如何使用 Ember 进行交互的,但一直无法弄清楚这一点。我需要在控制器中设置什么才能使其工作?

4

1 回答 1

0

使用 Routesmodel挂钩设置连接到控制器的数据(假设 lodges 在 中可用App.lodges):

App.LodgeRoute = Ember.Route.extend({
  model: function(params) {
    var lodges = App.lodges;
    return lodges.findProperty('id', params.lodge_id);
  }
});

App.FavoritesRoute = Ember.Route.extend({
  model: function() {
    var lodges = App.lodges;
    var lodge = this.modelFor('lodge');
    return lodge.favorites.map(function(favorite) {
      return lodges.findProperty('id', favorite.lodge_id);
    });
  }
});

然后在您的收藏夹模板中:

<script type="text/x-handlebars" data-template-name="favorites">
  <ul>
    {{#each content}}
      <li>{{lodgesName}}</li>
    {{/each}}
  </ul>
</script>
于 2013-10-01T06:07:17.730 回答