1

$routeChangeStart の「次のルート」引数をサービス内に保存し、別の場所から「次のルート」で $location.path() を呼び出そうとしています。ここでいくつかのコードを明確にするために:

$scope.$on('$routeChangeStart', function (event, next, current) {
    service.nextRoute = next;
    $rootScope.$broadcast('event:someEvent');
});

...ここで、イベントをキャッチして次のようなことを試みます (使用されるサービスがすべて適切に挿入され、利用可能であると仮定します)。

$rootScope.$on('event:someEvent', function() {
    //do some stuff
    $location.path(service.nextRoute);
});

私が得るのは、TypeError: Object #<Object> has no method 'charAt'への呼び出しからのエラー$locaton.path(service.nextRoute);です。同様の問題を抱えた StackOverflow に関する別の投稿がありますが、提案された解決策はうまくいかないようですか? それで、私は何を間違っていますか?

ありがとう

4

1 に答える 1

1

path()nextroute {}オブジェクトである文字列を取ります。$locationChangeStartパスにアクセスできるようにする代わりに、実際にキャプチャしたいようです。

scope.$on('$locationChangeStart', function(event, newVal, oldVal) {
});

this answerによると、これは文書化されていない機能です。

于 2013-08-10T16:41:02.923 に答える