2016-04-23 2 views
0

私はIron:routerを使用して流星パッケージを作成しています。 このパッケージのルートロジックは非常に限定されています。Meteor Package - Iron:router - 私のパッケージルートがそれを使用するアプリケーションのフックを実行するのを防ぐには?

しかし、すぐに私はまた、鉄を使用している流星アプリでこのパッケージを追加すると:、流星アプリ(onBeforeAction、onAfterAction、...)で定義されたフックはによって作成されたルートのルータと呼ばれていますパッケージ。 パッケージルートがアプリのフックを実行しないようにしたいと思います。

パッケージのルートを「外部」フックから分離するために使用できる単純なコードはありますか?多分私は特定のRouteControllerを作成することができますか?

私のための最後のオプションは、最初からルータを実装することです...

ありがとうございました!

答えて

1

私の問題を解決するコードは以下の通りです:

let MyRouter = new Iron.Router; 
MyRouter.onBeforeAction(Iron.Router.bodyParser.json()); 
MyRouter.onBeforeAction(Iron.Router.bodyParser.urlencoded({extended: false})); 

ソリューションは、新たな孤立ルータを宣言することです。ルータ宣言の下の2行は、POST要求のデータを取り出すことができます。

0

はい、あなたが孤立し、コントローラを作成する必要があります。

var MyPackageController = RouteController.extend({ 
    onBeforeAction: function() { ... }, 
    onAfterAction: function() { ... } 
    /* other options */ 
}); 

Router.map(function() { 
    this.route('packageRoute', { 
     controller: MyPackageController 
     /* other options */ 
    }); 
}); 
+0

あなたのコードを試しましたが、アプリで設定されたフックがまだ呼び出されています。私は、アプリケーションによって定義されたいくつかのフックでRouteControllerを拡張すると、それらを連結してパッケージフックで置き換えないと思います。それが今私が体験していることです。たぶん、私のパッケージに専用のRouteControllerを宣言できますか? – Ribens

+0

あなたはルールの真実に直面しています。それは厳密であるため、あなたは何もすることができません:Router - > RouteController - > Route。したがって、ルータにルールを追加するたびに、(パッケージを含む)すべてのRouteControllersがそれを継承します –

+0

'Router'オブジェクトを複製しようとしましたか? –

関連する問題