0

私は現在、リファクタリングの段階にあり、Marionette Router を宣言してインスタンス化するときに、おなじみの「未使用変数」JSLint を取得しています。これが私のコードです:

App.Application.addInitializer(function () {

        var globalRouter = new App.Routers.GlobalRouter({
            controller: new App.Controllers.GlobalController()
        });

        //Start Backbone History
        Backbone.history.start();

});

私が得るエラーは次のとおりです。

 unused 'globalRouter'

基本的に、アプリを起動する前に、変数宣言を使用してルーターを作成しています。私はこれを避けようとしています:

       new App.Routers.GlobalRouter({
            controller: new App.Controllers.GlobalController()
        });

「副作用に「new」を使用しないでください」と言って、別のJSLintエラーが発生するだけです。これについて誰かアドバイスはありますか?

さらに、追加しようとしました:

 /*jslint unparam: true */

しかし、これは機能しません:(

4

1 に答える 1

2

次のコードは議論の余地がありますが、次のように IIFE を使用できます。

App.Application.addInitializer(function () {
    (function(){
        return new App.Routers.GlobalRouter({
            controller: new App.Controllers.GlobalController()
        });
    }());
});

または、中間変数を使用します。

App.Application.addInitializer(function () {
    (function(){
        var router = new App.Routers.GlobalRouter({
            controller: new App.Controllers.GlobalController()
        });
        return router;
    }());
});

ちなみに、リファクタリング中なのでhistory、「initialize:after」リスナーから始めて、ルーティング イベントがトリガーされる前にすべてのルーティング コントローラーが初期化されていることを確認します。

于 2013-08-14T15:50:37.973 に答える