$ stateProvider导致空白页面

时间:2014-11-26 22:20:29

标签: angularjs angular-ui-router

我一直处理一个奇怪的角度问题,我得到一个空白页面。 我在这里发现了一些类似的问题,但答案却没有用。

好吧,我有以下配置

$stateProvider.state('store.home', {
  url: '/?cart',
  templateUrl: 'store/home/home.html',
  controller: 'store.home as vm',
  data: {
    title: 'Home'
  }
});

现在cart param只是我们必须在UI中弹出购物车的方式,如果它存在,但是如果我发送参数cart=opencart=close或任何其他参数就像foo=bar一样,我一直在得到一个空白页面,如果我转到/页面按预期工作,有什么想法吗?

如果我使用$state.go('home', { cart: 'open'},一切都按预期工作 - 如果直接访问它就不起作用。

2 个答案:

答案 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 />',
})

尝试life demo,观察code

答案 1 :(得分:0)

如果您将网址粘贴到位置栏并点击输入,请注意,如果您未将#放在“状态网址”前面(包括ui-router' s“搜索参数”,这不是真正的searchParams),您正在修改URL并强制重新加载页面。请参阅this guide,了解如何配置您的网络服务器以支持html5mode,或者只需将#放入您的网址,然后将ui-router中的html5mode关闭($locationProvider.html5Mode(false);)。

相关问题