2017-05-03 1 views
0

私はこのはJSでどのように使用されるかに精通しています。エバールート、 'this'は何を指していますか?

ルートを作成するための燃えさしのドキュメントからの例は次のとおりです。

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

その説明を希望するビットを残し:

「()マップを呼び出すとき、あなたはその意志関数を渡す必要がありますを呼び出して、ルートを作成するために使用できるオブジェクトを設定してください。どのオブジェクト

?グローバルルータオブジェクト?

答えて

1

あなたはthisをプリントアウトしたり、コードをデバッグ場合はthismap内のメソッドが実際にDSLオブジェクトのインスタンスであることがわかります場合。それはAPIの中に隠されている。本当に起こるのはそれです。 Ember.RouterDSLのインスタンスを作成し、このオブジェクトを介して対応するパスの一致を生成し、でカプセル化された実際のrouterに渡します。もちろん、私たちのアプリ内ではEmber.Routerしか扱っていませんし、他のクラスの詳細についてはわかりません。興味があれば、私が提供したリンクからソースコードを追跡することができます(これはちょうど1週間前の仕事の一部です)。

1

はい。あなたが言ったように、それはRouterオブジェクトです。それはrouter.jsファイルの一番上の場所に定義されています。私たちは内部でプロパティを使用しませんmap機能。

Routerでプロパティとそのメソッドを使用することができます。次に示すように、トランジションコールバックは、すべてのトランジションが完了した後に便利なコールバックです。

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; 
    } 
}); 
関連する問題