コントローラを共有する2つのルートがあり、1つはビューの読み込み前に解決されたデータを必要とし、もう1つは解決されたデータを必要としません。コントローラ内にルート解決データを手動で注入するにはどうすればよいですか?
ルーティングセグメントの例:
...
when('/users', {
controller: 'UsersCtrl',
templateUrl: '/partials/users/view.html',
resolve: {
resolvedData : ['Accounts', function(Accounts) {
return Accounts.get();
}]
}
}).
when('/users/add', {
controller: 'UsersCtrl',
templateUrl: '/partials/users/add.html'
})
...
コントローラの例:
app.controller('UsersCtrl', ['$scope', 'Helper', 'resolvedData',
function($scope, Helper, resolvedData) {
// this works for the first route, but fails for the second route with
// unknown "resolvedDataProvider"
console.log(resolvedData);
}]);
は、私が明示的に依存関係として解決名を使用せずに、コントローラでresolvedData
を得ることができる方法はありますか?だから、チェックを行うことができますか?
$ injectorを使用すると機能しません。これはangularjsで行うことができます
app.controller('UsersCtrl', ['$scope', 'Helper', '$injector',
function($scope, Helper, $injector) {
// this does not work -> fails with the unknown "resolvedDataProvider" as well
$injector.get('resolvedData');
}]);
:しかし、これもresolveData
セットを( '/ユーザー)があるルートでは動作しません
if ($injector.has('resolveData')) {
var resolveData = $injector.get('resolveData');
}
:私は次のように何かをしたいと思います?それとも、新しいコントローラを作成するだけですか?
ありがとうございます。
このソリューションはどのように私のものより優れていますか?基本的には、ルートサービスで埋められたオブジェクトを使用して完全に同じことをしています。私の解決策は、ルータの一貫性とコントローラがまだ状況を処理できるようにします。 – Fourth
@Fourth - 未使用の解決策を経路に追加することは、より良い選択肢であるとは思わない。私の解決策は自分のニーズに合っていると言おう。私はあなたの回答をupvoteしたが、私はあなたのdownvoteを信じていない。私の正当性は正当です。 –
あなたは意図した方法で角度の機能を使用していません。あなたは確かに "働く"答えを見つけたが、意図された方法で機能を使用しません。ルート解決は、コントローラにコンポーネントを注入する方法です。解決がそのルートに意味をなさない場合、これらのコンポーネントは正当には未定義である可能性があります。私は、他の人がこの解決策を使用することを妨げるようにあなたを落胆させました。 – Fourth