2016-10-20 1 views
1

body 태그의 컨트롤러를 사용하여 응용 프로그램을 통해 사용되는 일부 변수, 즉 응용 프로그램에서 사용되는 언어 (URL 매개 변수 기반)를 인스턴스화합니다. 초기화() 함수에서

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

나는 $ stateParams를 사용하여 URL에서 "LAN"PARAM을 읽으려고하지만 여전히 정의되지 않은 것

: 나는 $ stateParams 인쇄를 참조 할 수 있기 때문에

/*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" 
} 

그것은 이상한 .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 그들의 controllers이다 약 UI-라우터 world ... and not AngularJS ng-controller

관련 문제