我在body标签中使用一个控制器来实例化一些通过应用程序使用的变量,即将在应用程序中使用的语言(基于url param)。
self.callback()
在init()函数中,我尝试使用$ stateParams从url中读取“lan”参数,但它仍未定义:
<!--index.html-->
<body ng-controller="AppCtrl" ng-init="init()">
<section ui-view></section>
</body>
这很奇怪,因为我可以看到它使用.lan属性打印$ stateParams我无法访问它。
我还配置了这样的$ stateProvider:
/*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"
}
这样做的正确方法是什么?
答案 0 :(得分:3)
方法是从这里删除ng-controller
Build.VERSION.SDK_INT
并将其移至州
<body ng-controller="AppCtrl" ng-init="init()">
一般而言......状态&#39; .state('root', {
url: '/{lan:(?:pt|en)}',
abstract: true,
template: '<div ui-view=""></div>',
params: { lan: { value: 'pt' } },
controller:'AppCtrl'
})
和他们的views
关于 UI-Router 世界...而不是AngularJS ng-controller