Angular ui-router:孩子没有得到父状态

时间:2015-09-21 21:20:31

标签: javascript angularjs angular-ui-router

我有一个使用ui-router的Angular应用程序,并在我的应用程序中定义了以下状态。

def something(number_a, number_b):
    if number_a > number_b
        return 'hello'
    else: 
        return 'goodbye'

word = something(a, b)

我的控制器看起来像:

$stateProvider
  .state('classes', {
    url: '/classes/:type',
    templateUrl: 'classes.html',
    controller: 'ClassesCtrl',
  })
  .state('classes.detail', {
    url: '/:id',
    views: {
        "@": {
            templateUrl: 'class.html',
            controller: 'ClassCtrl'
        }
    }
  });

如您所见,class.detail通过定位未命名的ui-view根级别来隐藏父视图。我遇到的问题是孩子没有继承父母的范围(我无法在class.detail中访问$ scope.foo)。当我进入子状态时,似乎父状态被破坏了,因为如果我点击它,它必须重新加载所有数据。

如何有效隐藏父视图但仍可访问父数据?

1 个答案:

答案 0 :(得分:1)

来自ui-router文档:

  

仅按视图层次结构的范围继承

     

请记住,只有嵌套状态的视图时,范围属性才会继承状态链。范围属性的继承与状态的嵌套无关,也与视图嵌套(模板)无关。

好吧,您使用@来定义视图,但您的父状态已命名,因此您应将其命名为@classes

修改:made this fiddle来解释名称。