从View访问动态路由参数 - ember.js

时间:2012-09-14 15:58:25

标签: ember.js

如果我在ember.js中有一条路线,其中有一个名为“:albumid”的动态片段,我如何从视图中访问它?

Ember.Route.extend({
    route: "/:albumid"
})

参数设置如下:

gotoAlbum = function(r,e) {
    router.transitionTo("album", {albumid: StuffThatReturnsTheAlbumid});
}

1 个答案:

答案 0 :(得分:-1)

您需要在路由的deserialize()方法中使用albumid参数来返回上下文对象。此上下文将传递到您的路线的connectOutlets()。在connectOutlets()中,您可以将上下文传递给控制器​​和/或视图。

在下面的示例中,将创建一个AlbumController,其中content属性设置为传递到connectOutlets()的上下文。还将创建一个AlbumView,它可以访问控制器的content

Ember.Route.extend({
  route: "/:albumid",

  serialize: function(router, context){
    return {albumid: context.get('albumid')};
  },

  deserialize: function(router, params){
    // return a context object that will be passed into connectOutlets()
    return App.store.find(App.Album, params.albumid);
  },

  connectOutlets: function(router, context) {
    // context comes from deserialize(), and will be passed in as the
    // content property for AlbumController
    router.get('albumsController').connectOutlet('album', context);
  }
})