Mar*_*ark 5 javascript angularjs angular-routing angular-ui-router
我的状态看起来像这样
.state('home.foo.bar', {
url: 'view?one&two',
views: {
'base': {
templateUrl: 'blah',
controller: 'blahCtrl'
}
},
reloadOnSearch: false
})
Run Code Online (Sandbox Code Playgroud)
如果我在我的模板中导航到这个状态
ui-sref="home.foo.bar({one: valueOne, two: valueTwo})"
Run Code Online (Sandbox Code Playgroud)
一切都很好,网址是
的.com /查看?一个= valueOne&2 = valueTwo
但是,如果我刷新页面,则网址将更改为.com/view,并且不会包含$state.params或$stateParams包含值.
如果我添加这样的解决步骤
.state('home.foo.bar', {
url: 'view?one&two',
views: {
'base': {
templateUrl: 'blah',
controller: 'blahCtrl'
}
},
resolve: {
p: function($location, $stateParams, $state) {
console.log($location.search(), $stateParams, $state);
if(!$stateParams.one && !$stateParams.two {
$stateParams.one = $location.search().one;
$stateParams.two = $location.search().two;
} else {
return $location.search().one;
}
}
},
reloadOnSearch: false
})
Run Code Online (Sandbox Code Playgroud)
然后当我最初导航到我的模板中的状态时,日志语句不$location.search()显示任何内容,只显示oneValue和twoValue在$stateParams和$state.params.当我刷新它的反面$location.search()显示的参数和它们的值正确,但$stateParams并$state.params是空的.
添加if语句并明确设置值可以解决我的错误,但这不能按预期工作吗?
我错过了一些明显的东西吗
我认为这可能是因为您在开头或网址中缺少斜杠:
.state('home.foo.bar', {
url: '/view?one&two',
views: {
'base': {
templateUrl: 'blah',
controller: 'blahCtrl'
}
},
reloadOnSearch: false
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1750 次 |
| 最近记录: |