Emberjs没有渲染嵌套模板

时间:2013-11-12 19:59:17

标签: ember.js

我正在使用Ember App Kit作为基础,使用Ember构建社交应用程序。索引页面渲染得很好。在导航到嵌套模型时,路由正确触发,控制台中没有错误,但视图不呈现。以下是相关代码:

控制台

Rendering friend with <(subclass of Ember.View):ember2698> Object {fullName: "view:friend"}
Transitioned into 'friends.friend'

路由/ friends.js

var FriendsRoute = Ember.Route.extend({
  model: function(params) {
    return $.getJSON('JSON_ROUTE').then(function(data){
      return data.friends.map(function(friend) {
        return friend;
      });
    });
  }
});

export default FriendsRoute;

router.js

Router.map(function() {
  this.resource('friends', function() {
    this.resource('friend', { path: '/:friend_id' });
  });
});

export default Router;

模板/ friends.hbs

<div class="friends-list">
    {{#each model}}
        {{#link-to 'friend' this }}
            {{{display_name}}}
        {{/link-to}}
    {{/each}}
</div>
<div class="friend">
    {{ outlet }}
</div>

模板/ friend.hbs

<div>{{ display_name }}</div>
<div>{{ bio }}</div>

2 个答案:

答案 0 :(得分:1)

您是否有带插座的应用程序模板? (我会假设不,因为你没有提到它)

此外,在某些时候你需要一个朋友路线,否则刷新将无效。

http://emberjs.jsbin.com/ElAfAcE/3/edit

App.FriendsRoute = Ember.Route.extend({
  model: function() {
    return [{friend_id:1, color:'red'}, {friend_id:2, color:'yellow'}, {friend_id:3, color:'blue'}];
  }
});

App.FriendRoute = Ember.Route.extend({
  model: function(params){
    return this.modelFor('friends').findProperty('friend_id', parseInt(params.friend_id));
  },
  serialize: function(model){
    return {friend_id: model.friend_id}; 
  }
});

答案 1 :(得分:0)

当Ember在嵌套路线中查找模板时,它会在此ID下查找:朋友/朋友

  

最后,访问/ posts / new将首先呈现帖子模板,然后将帖子/新模板呈现到其出口。

http://emberjs.com/guides/routing/defining-your-routes/#toc_resources

这就是问题,但解决方案涉及的更多,因为您使用的是编译模板。将文件重命名为friends / friend.hbs或将其添加到名为“friends”的文件夹中可能非常简单。