EmberJS:具有动态段(路由器)的ArrayController,但不是Store

时间:2013-03-07 19:16:51

标签: javascript ember.js

我想知道如何构建一个“简单”的应用程序:

/photos/ (shows all photos – via ArrayController but without a remote service)
/photos/1  ... /photos/2  (shows one photo)

有人可以提供最佳实践吗?

1 个答案:

答案 0 :(得分:2)

您必须定义与您想要的网址匹配的路线:

App.Router.map(function() {
    // this will give you ~/#/photos
    this.route('photos') 
    // this will give you ~/#/photos/1 (or whatever number)   
    this.route('photo', { path: '/photos/:photo_id' }); 
});

以下是一个示例:http://jsfiddle.net/schawaska/AabL8/

如果你想做嵌套视图,比如显示一个拇指列表,当点击拇指时,你会在列表下面看到它的实际大小的图片,那么你必须通过使用路由资源稍微改变一下,嵌套像这样:

App.Router.map(function() {    
    this.resrouce('photos', function() {
        this.route('photo', { path: '/:photo_id' });    
    });
});

如果您这样做,则必须在“照片”模板中添加{{outlet}} 并在负责单个照片对象的类的名称中添加Photos

  • PhotoRoute变为PhotosPhotoRoute
  • data-template-name="photo"变为data-template-name="photos/photo"

以下是一个示例:http://jsfiddle.net/schawaska/JfRbf/