嵌套路由's模板未在EmberJS应用程序中呈现

Nested route's template not getting rendered in EmberJS app

本文关键字:EmberJS 应用程序 路由 嵌套      更新时间:2023-09-26

我正在设置一个测试Ember应用程序,目前看起来像这样:

App = window.App = Ember.Application.create();
App.Router.map(function() {
  this.resource('subscriptions', { path: '/' }, function() {
    this.route('media', { path: '/:photo_id' });
  });
});
App.SubscriptionsRoute = Ember.Route.extend({
  model: function() {
    return App.Subscription.findAll();
  }
});
App.SubscriptionsMediaRoute = Ember.ObjectController.extend({
  model: function(params) {
    return App.Subscription.find(params.photo_id);   
  },
  serialize: function(model) {
    return { photo_id: model.photo_id };
  }
});
App.Subscription = Ember.Object.extend();
App.Subscription.reopenClass({
  findAll: function(id) {
    var subs = Ember.A([
      App.Subscription.create({ id: 1, photo_id: 221, name: "Test 1" }),
      App.Subscription.create({ id: 2, photo_id: 222, name: "Test 2" }),
      App.Subscription.create({ id: 3, photo_id: 223, name: "Test 3" })
    ]);  
    return subs; 
  }
});

这个想法是显示订阅列表,每个订阅最终都会链接到一些媒体(图像),以便在访问正确的路线时显示,我显示的订阅列表如下:

<script type="text/x-handlebars" data-template-name="subscriptions">
    <div class="col-3">
      <div class="list-group">
        {{#each subscription in controller}}
          {{#linkTo 'subscriptions.media' subscription classNames="list-group-item"}}
            {{subscription.name}}
          {{/linkTo}}
        {{/each}}
      </div>
    </div>
    <div class="col-9">
      {{outlet}}
    </div>
</script>
<script type="text/x-handlebars" data-template-name="subscriptions/media">
    Display photos here -- NOT RENDERING --
</script>

这一切看起来都很好,但由于某种原因,当我单击链接时,我的subscriptions/media模板没有显示在订阅出口上,这里有一个jsbin供参考:http://jsbin.com/ubumag/3/edit

有指针吗?提前谢谢。

你的App.SubscriptionsMediaRoute是不必要的,这是ember已经自动为你的路由器映射所做的默认行为,所以删除它或注释掉它,一切都会很好。

在这里查看您的工作jsbin。

希望能有所帮助。