我一直处理一个奇怪的角度问题,我得到一个空白页面。 我在这里发现了一些类似的问题,但答案却没有用。
好吧,我有以下配置
$stateProvider.state('store.home', {
url: '/?cart',
templateUrl: 'store/home/home.html',
controller: 'store.home as vm',
data: {
title: 'Home'
}
});
现在cart
param只是我们必须在UI中弹出购物车的方式,如果它存在,但是如果我发送参数cart=open
,cart=close
或任何其他参数就像foo=bar
一样,我一直在得到一个空白页面,如果我转到/
页面按预期工作,有什么想法吗?
如果我使用$state.go('home', { cart: 'open'}
,一切都按预期工作 - 如果直接访问它就不起作用。
答案 0 :(得分:0)
您的方案应该正常运行。我没有做太多改动,只是创建了working plunker。
试一试here,您是否可以更改URL params ?cart=xxxx
控制器只有一个函数go,取一个参数并重定向到'store.home'
:
var controllerSH = ['$scope', '$state', function($scope, $state){
var go = function(param){
$state.go('store.home', { cart: param })
};
return {
go : go,
}
}];
然后使用原始的州 def和angularjs
1.3.4,UI-Router
0.2.13,所有这些链接都正常工作:
// controller function go
<button ng-click="vm.go('open')">
<button ng-click="vm.go('close')">
// href:
<a href="#/?cart=open">
<a href="#/?cart=close">
// ui-sref:
<a ui-sref="store.hom({cart:'open'})">
<a ui-sref="store.hom({cart:'close'})">
注意:事实上,有一部分不在问题片段中 - 我们州的父母:
.state('store', {
abstract: true,
template: '<ui-view />',
})
答案 1 :(得分:0)
如果您将网址粘贴到位置栏并点击输入,请注意,如果您未将#
放在“状态网址”前面(包括ui-router
' s“搜索参数”,这不是真正的searchParams),您正在修改URL并强制重新加载页面。请参阅this guide,了解如何配置您的网络服务器以支持html5mode,或者只需将#
放入您的网址,然后将ui-router
中的html5mode关闭($locationProvider.html5Mode(false);
)。