我很熟悉JS中如何使用这个。
用于创建路径的ember文档的示例是:
Router.map(function() {
this.route('about', { path: '/about' });
this.route('favorites', { path: '/favs' });
});
他们的解释有点不可取:
“调用map()时,应传递一个函数,该函数将使用值此设置为可用于创建路径的对象。”
什么对象?全局路由器对象?
答案 0 :(得分:1)
是。就像你说的那样Router
对象。这是在router.js文件的顶部定义的。但我们不会在map
函数中使用属性。
我们可以在Router中使用属性及其方法,就像下面我演示的didTransition回调一样,它在所有转换完成后都是有用的回调。
const Router = Ember.Router.extend({
location: config.locationType,
rootURL: config.rootURL,
myService:Ember.inject.service(),
didTransition() {
this._super(...arguments);
console.log(' After all the router transition complete ', ...arguments);
//if you override anywhere didTransition dont forget to return true to allow chain to reach here
return true;
}
});
答案 1 :(得分:1)
如果您打印this
或调试代码,您会发现this
方法中的map
实际上是DSL对象的实例。它被隐藏在api中;真正发生的是那个; Ember.Router创建DSL
的实例,并通过此对象生成相应的路径匹配,并将其传递给Ember.Router
自身封装的实际router。当然,在我们的应用程序中,我们只处理Ember.Router
并且不了解其他类的详细信息。如果您有兴趣,可以从我提供的链接中跟踪源代码(这是我一周前完成的一些工作)。