Bli*_*Top 6 javascript angularjs
我在理解stateParams应该如何工作方面遇到了很多麻烦.我看到的任何地方都表明,item_id当我前往URL时,这应该通过456 /#/manage/456,而是$stateParams一个空对象.此外,在$state传递给MainCtrl 的对象中,我可以通过使用来访问所有参数$state.params,但这似乎是不合需要的和hackish.
angular
.module('router',['ui.router'])
.config(['$stateProvider', '$urlRouterProvider', function($stateProvider, $urlRouterProvider)
{
$stateProvider
.state('manage',
{
url: '/manage',
templateUrl: '/templates/main.html',
controller: 'MainCtrl'
})
.state('manage.item_id',
{
url: '/:item_id',
templateUrl: '/templates/main.html',
controller: 'MainCtrl'
})
}])
.controller('MainCtrl', ['$scope', '$stateParams', '$state', function($scope, $stateParams, $state)
{
// empty object
console.log('$stateParams: ', $stateParams);
// shows the variables i want
console.log('$state.params: ', $state.params);
}])
Run Code Online (Sandbox Code Playgroud)
And*_*rch 10
您正在尝试做的应该工作正常,请参阅此JSFiddle:http://jsfiddle.net/ahchurch/gf7Fa/14/
<script type="text/ng-template" id="item.tpl.html">
embeded item template
</script>
<script type="text/ng-template" id="main.tpl.html">
<ul>
<li><a href="#/manage/45">change route</a></li>
</ul>
<div ui-view></div>
</script>
<div ui-view></div>
angular.module('myApp',['ui.router'])
.config(['$stateProvider', '$urlRouterProvider', function($stateProvider, $urlRouterProvider)
{
$urlRouterProvider.otherwise("/manage");
$stateProvider
.state('manage',
{
url: '/manage',
templateUrl: 'main.tpl.html',
controller: 'MainCtrl'
})
.state('manage.item_id',
{
url: '/:item_id',
templateUrl:'item.tpl.html',
controller: 'MainCtrl'
})
}])
.controller('mainController', function(){})
.controller('MainCtrl', ['$scope', '$stateParams', '$state', function($scope, $stateParams, $state)
{
// empty object
console.log("main controller");
console.log($stateParams);
}]);
Run Code Online (Sandbox Code Playgroud)
我注意到的一件事是你的模板对于两种状态都是相同的文件,所以你可能只是看到"管理"状态的初始化,并且从未看到"manage.item_id"状态.
| 归档时间: |
|
| 查看次数: |
11863 次 |
| 最近记录: |