ui-router嵌套视图访问多个控制器

时间:2014-08-12 22:31:03

标签: angularjs angular-ui-router nested-views

使用ui-router,任何一个州的子孙都可以访问他们的父母和祖父母控制器吗?

所以例如.state(resources.resource.rates).rate状态控制器可以访问资源和资源中的$ scope.objects(它们都有自己的控制器)吗?

根据假设我有一个html设置,其中所有内容都是资源中的嵌套视图,其中包含ui-view =" content2"。但是我在资源中有另一个页面,称为费率,我想在与资源相同的嵌套视图中打开,但也可以访问资源控制器。

.state('resources.resource.rates', {
    url: '/rates',
    views:{
        "content2":{
            templateUrl: 'templates/rates.html',
            controller: 'CreateRatesCtrl'
        }
    }   
})  

我的视图中的ng-href链接到/resources/{{resource.Id}}/rates但是没有在资源ui-view中打开费率页面。

所以我尝试将视图设置为content2 @ resources,如此

views:{
        "content2@resources":{
            templateUrl: 'templates/rates.html',
            controller: 'CreateRatesCtrl'
      }
}   

这可以理解为html现在在资源ui-view中填充rates.html并使用ng-href作为资源/ {{resource.Id}} / rates,但不幸的是我只能访问资源范围对象。我有一个资源控制器所需的resourceId。在这种情况下,设置content2 @ resources是否限制我的范围只能访问资源控制器?如果是这样我怎么能这样做,所以我也可以访问资源控制器?

1 个答案:

答案 0 :(得分:5)

引自ui-router wiki :

  

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

这应该足以理解状态和/或视图的嵌套给出了什么,而不是给你。