2

私は現在AngularJSと連絡を取ろうとしています。私はかなり複雑な Web アプリケーションを構築することを計画しているので、いくつかのナビゲーション レベルを持つ複雑なアプリケーションには非常に不満があるため、ng ドキュメントにある ngView/$routeProvider の組み合わせに代わるものを探しました。ngRouteそこで私が試したのは、次のように使用できるというカスタム ディレクティブを作成することです。

<div ng-route="users">
    <div ng-route=":id"></div>
    <div ng-route></div><!-- default -->
</div>

私が現在持っているのは、次のディレクティブ定義です。

angular.module('app').directive('ngRoute', function($routeProvider) {
    var getRoute = function($el) {
        var parts = [];
        var $curEl = $el;
        while($curEl.length > 0) {
            parts.unshift($curEl.attr('ng-route'));
            $curEl = $curEl.parent().closest('*[ng-route]');
        }
        return parts.join('/');
    }

    var directiveDef = {
            link: function(scope, $el, iAttrs, controller) {
                var route = getRoute($el);
                // Register route observer dependant on calculated route...
            }
    };
    return directiveDef;
});

残念ながら、$routeProviderルート観測の登録に必要なの DI が原因でエラーが発生します。

Error: Unknown provider: appProvider <- app <- ngRouteDirective

ここで何か見逃しましたか?また、私のアプローチを自由に批判してください (誰かが私の問題に対するより良い解決策を既に見つけているかもしれません)。

4

3 に答える 3

1

ええ、私はアプローチについてあまり明確ではありませんが、依存性注入は次のようにすべきではありません:

angular.module('app')
  .directive('ngRoute',['$routeProvider, function($routeProvider) {
   // etc,etc...
     };
   ]);
于 2013-06-03T03:55:51.287 に答える
0

angular-ui プロジェクト ( http://github.com/angular-ui/ui-router ) のルーターを使用することになりました。非常に満足のいくものでした。残念ながら、DI が適切に機能しなかった理由はまだわかりません。

于 2013-06-03T10:59:58.827 に答える