使用Ember.js在模板中显示模型JSON数据

时间:2013-09-30 21:46:07

标签: javascript json ember.js

在一个问题中这很难说,但希望我的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数组中的favorites访问每个小屋中的收藏夹,以获取带有相关小屋ID的lodgesName。示例:每个小屋所有者都有他/她“收藏”的小屋列表。我想查看他们最喜欢的标题列表。在这个提供的例子中,他们互相青睐。

我的路线是:

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

我试图围绕如何使用Ember进行交互,但一直无法解决这个问题。我需要在控制器中设置什么才能使其工作?

1 个答案:

答案 0 :(得分:0)

使用路由model挂钩设置连接到控制器的数据(假设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>