ui-sref在嵌套视图中不起作用

时间:2014-11-22 03:47:24

标签: angularjs twitter-bootstrap-3 angular-ui-router

我已完成的家庭作业 - 在本网站上查看了近8-9个ui-sref相关问题(如何,复杂的例子等),相关的笨蛋,Scotch.io等。我可以'似乎弄清楚为什么我的代码不起作用。我花了6到7个小时调试应用程序,但我似乎无法找到问题。

我的页面分为 a)layout.html - 这会强制引导网格系统 b)app-navbar - 导航栏在顶部(代码是现在的bootstrap示例的剪切 - 粘贴...) c)app-accordion - 使用ui bootstrap手风琴来显示n个项目 d)app-right - 右侧包含一些UI元素和一个ui-grid

所有元素的ui-view正确呈现...即"索引"我的控制器正在调用state。我在app-navbar.html中添加了几个简单的按钮,只是为了调试......

<ul class="nav nav-pills">
    <li role="presentation" class="active"><a ui-sref="view1">View1</a></li>
    <li role="presentation"><a ui-sref="view2">View2</a></li>
</ul>
<div ui-view="view-test"></div>

这是我的控制器代码片段:

        .state('view1', {
            url: '/view1',
            views: {
                'view-test': {
                    templateUrl: 'view1.html',
                    controller: 'View1Ctrl'
                }
            }
        })

当我将鼠标悬停在按钮上时,我看到... / view1和2显示在浏览器的页脚上,但是当我点击它们时没有任何反应。目前,手风琴仍然使用href,但如果我使用ui-sref它会停止工作。一旦我越过这个,那就是下一个问题......你如何使用ui-sref来控制手风琴这样的控制?

有关可能发生的事情的任何想法?插件:http://plnkr.co/edit/c89j3eFvYyguMt0QznAI

1 个答案:

答案 0 :(得分:1)

updated working plunker。我做了2次更改。

首先,我升级了您的version to UI-Router 0.2.13 (修复了一些问题,只是总是使用最新版本)

其次,我在状态定义中添加了缺失的部分:谁是我的父母

.state('view1', {
    url: '/view1',
    parent: 'index',        // here is explicit setting who is parent
    views: {
        'view-test': {
            templateUrl: 'view1.html',
            controller: 'View1Ctrl'
        }
    }
})

检查here

EXTENDED,根据以下评论,文档中提供的内容很少

Methods for Nesting States

  

国家可以互相嵌套。有几种嵌套状态的方法:

     
      
  • 使用&#39;点符号&#39; 。例如.state('contacts.list', {})
  •   
  • 使用ui-router.stateHelper从嵌套状态树构建状态。由@marklagendijk提供。
  •   
  • parent 属性与父名称一起使用为字符串。例如: parent: 'contacts'
  •   
  • parent 属性与父对象一起使用。例如,parent:contacts(其中&#39; contacts&#39;是stateObject)
  •   

...

Parent Property using State Name String

  

或者,您可以通过父属性指定州的父级。

$stateProvider
  .state('contacts', {})
  .state('list', {
    parent: 'contacts'
  });