0
angular ui routerを使用しています。コントローラのコンストラクタに$scope
とプリフェッチされたデータを注入する必要があります。
解決策オブジェクトに約束を追加するだけで、私が$scope
サービスを注射可能な角度uiルータのリストに追加するとすぐに、解決することができません。
作業typescriptですコード:
は$stateProvider.state('parent.child', {
url: '/child',
template: 'I am the child state',
controller: 'TestController',
controllerAs: 'vm',
resolve: {
viewModel:initializeControllerViewModel
}
});
initializeControllerViewModel.$inject = [
'$stateParams',
'$q',
'$timeout'
];
function initializeControllerViewModel(
$stateParams: ng.ui.IStateParamsService,
$q: ng.IQService,
$timeout:ng.ITimeoutService)
{
let deferred = $q.defer();
$timeout(() =>
{
deferred.resolve({
property1: 'foo'
});
}, 500);
return deferred.promise;
}
class TestController
{
constructor(
viewModel: any)
{
//viewModel should be {property1: 'foo'}
}
}
に動作していないコード:
$stateProvider.state('parent.child', {
url: '/child',
template: 'I am the child state',
controller: 'TestController',
controllerAs: 'vm',
resolve: {
'$scope': '$scope',
viewModel:initializeControllerViewModel
}
});
class TestController
{
constructor(
$scope: ng.IScope,
viewModel: any)
{
//$scope should be injected
//viewModel should be {property1: 'foo'}
}
}
私がいることを試してみました前に '$ scope'変数が正しく注入されていますが、' viewModel'は 'undefined'の値を持っています –
'viewModel'を$ injectに追加しましたか? – Vitalii
いいえ私は問題を解決して追加しました。あなたの答えを更新してください。私はそれを受け入れます。 –