1

起動時にコントローラーによって検出されるいくつかのプラグインをロードしたい AngularJS アプリケーションがあります。プラグインを機能させるために$routeProvider、コントローラーからのルートをいくつか追加しましたが、これを行う方法はないようです。

現在、私は以下のようにかなり醜いハックを使用しています:

var routeProvider;
angular.module('example', [], function($routeProvider) {
    routeProvider = $routeProvider;
    // Set up other routes
}

function Controller($http, $location, $timeout) {
    // Use $http to find some plugin
    routeProvider.when(plugin.url, plugin.options);
    // Ugly hack so that the plugin appears if $location.path() already points to it
    var path = $location.path();
    $location.path("/");
    $timeout(function() { $location.path(path); }, 10);
}

意味のないことをしないと$timeout、プラグインのルートで開始 (ページをロード) すると、ロードされません ($route.current空白のままになります)。パス間のジャンプにより、ルートが適切に解決され、プラグイン ビューが正常にロードされます。

これを行うより良い方法はありますか?

4

2 に答える 2

0

$ routeProviderをソースから切り離して、独自のバージョンを作成できますか?:-)

$ routeProviderは、あなたのために作られた単なるプロバイダーです。https://github.com/angular/angular.js/blob/master/src/ng/route.js

于 2012-08-06T23:09:38.367 に答える
0

最終的にこれを行った方法は、AngularJS を起動する前にサービスからすべてのルートをダウンロードし、そのデータ構造を使用してルートを設定し、情報を入手してすべてが適切に設定されたら Angular をブートストラップすることでした。 .

これの唯一の欠点は、特に処理する必要があるサービス プラグインが複数ある場合に、起動が遅くなることです。

于 2014-03-12T03:20:41.380 に答える