2016-10-20 3 views
1

bodyタグのコントローラを使用して、アプリケーションを通じて使用されるいくつかの変数、つまりアプリケーションで使用される言語(URLパラメータに基づく)をインスタンス化しています。私は$ stateParamsを使用して、URLから「LAN」のparamを読み取ろうが、それはまだ未定義のinit()関数で

<!--index.html--> 
<body ng-controller="AppCtrl" ng-init="init()"> 
    <section ui-view></section> 
</body> 

/*AppCtrl*/ 
$scope.init = function() { 
    console.log($stateParams); // prints Object {lan: "en"} 
    console.log($stateParams.lan); // prints undefined 
    $timeout(function() {console.log($stateParams.lan);}, 500); //prints "en" 
} 

私はそれが$ stateParamsを印刷見ることができるので、それは奇妙です.lanプロパティではアクセスできません。

はまた、私はこのような$ stateProviderを設定した:

$stateProvider 
    .state('root', { 
     url: '/{lan:(?:pt|en)}', 
     abstract: true, 
     template: '<div ui-view=""></div>', 
     params: { lan: { value: 'pt' } }, 
    }) 
    .state('home', { 
     parent: 'root', 
     url: '/', 
     templateUrl: '/front/main/views/front-main.client.view.html' 
    }); 

これを行うための正しい方法は何ですか?

答えて

3

方法はこちら

<body ng-controller="AppCtrl" ng-init="init()"> 

からNG-コントローラを削除し、一般的に

.state('root', { 
    url: '/{lan:(?:pt|en)}', 
    abstract: true, 
    template: '<div ui-view=""></div>', 
    params: { lan: { value: 'pt' } }, 
    controller:'AppCtrl' 
}) 

を述べるためにそれを移動することです。..州のviewsとそのcontrollersUI-ルータです world ... and not AngularJS ng-controller

関連する問題