ember路线,'这个'是指什么?

时间:2017-05-03 01:24:20

标签: ember.js ember-cli

我很熟悉JS中如何使用这个

用于创建路径的ember文档的示例是:

 Router.map(function() {
 this.route('about', { path: '/about' });
 this.route('favorites', { path: '/favs' });
 });

他们的解释有点不可取:

“调用map()时,应传递一个函数,该函数将使用值设置为可用于创建路径的对象。”

什么对象?全局路由器对象?

2 个答案:

答案 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并且不了解其他类的详细信息。如果您有兴趣,可以从我提供的链接中跟踪源代码(这是我一周前完成的一些工作)。