2

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;

templates/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>
4

2 に答える 2

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}; 
  }
});
于 2013-11-12T23:23:25.343 に答える
0

Ember がネストされたルートでテンプレートを探すとき、この ID でそれを探します: friends/friend

最後に、/posts/new にアクセスすると、最初に posts テンプレートがレンダリングされ、次に posts/new テンプレートがそのアウトレットにレンダリングされます。

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

それが問題ですが、コンパイルされたテンプレートを使用しているため、解決策はもう少し複雑です。ファイルの名前を friends/friend.hbs に変更するか、「friends」というフォルダーに追加するのと同じくらい簡単です。

于 2013-11-12T20:31:02.930 に答える