从Ember路由添加和检索元数据

10 ember.js

出于报告目的,我想将一些元数据与Ember路由相关联,并且更愿意按如下方式进行:

this.route('list', { path: '/list', description: 'Master List' });
Run Code Online (Sandbox Code Playgroud)

然后description从路由本身或其他地方(如didTransition应用程序路由器上的挂钩)访问此属性.我已经回顾了路由器和路由的来源,并且不能说我真的理解它,当然不能很好地理解如何检索以这种方式指定的自定义属性.我看到有一个名为DSL的对象,这是显然thisthis.route在指定map的方法Router,但不能看到如何从这里到那里.从一个子类中Ember.Route,我看到的属性叫this.router,和this.router.router,但我关于这些点不清楚.

或者,如果允许我做我想要的事情,以下内容也会起作用:

this.route('list', { path: '/list' }, function() {
    this.description = "Master List";
});
Run Code Online (Sandbox Code Playgroud)

我可以将自定义属性与指定的路径相关联Router#map,如果是,如何?

小智 0

我最终按照以下思路解决了这个问题,编写了自己的“路由”函数来记录我需要的数据,然后将其传递给 DSL:

var myRouteData = {};

function route(dsl, name, options, fn) {
  if (typeof options === 'function') fn = options, options = {};
  var routeName = dsl.parent ? dsl.parent + '.' + name : name;
  myRouteData[routeName] = { options.myRouteOption };

  dsl.route(name, options.fn);
}
Run Code Online (Sandbox Code Playgroud)

用法:

this.resource('foo', function() {
  route(this, 'bar', {myRouteOption: true});
});
Run Code Online (Sandbox Code Playgroud)