在一个问题中这很难说,但希望我的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进行交互,但一直无法解决这个问题。我需要在控制器中设置什么才能使其工作?
答案 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>