无法从子状态更改ui-view模板

时间:2015-08-11 22:02:27

标签: angularjs angular-ui-router

我想在用户进入main.login状态后在loginModal视图中显示loginModal.html,但它没有发生。为什么?

HTML

<div ui-view="loginModal">

</div>

<div ui-view="content">

</div>

JS

.state('main', {
            url: '/',
            views: {
                "content": {
                    templateUrl: 'app/views/index.html'
                }
            }
        })
.state('main.login', {
            url: 'login',
            views: {
                "loginModal": {
                    templateUrl: 'app/views/login.html'
                }
            }
        })

1 个答案:

答案 0 :(得分:1)

“loginModal @”

您必须明确地以root未命名状态定位loginModal视图。

.state('main.login', {
            url: 'login',
            views: {
                "loginModal@": {
                    templateUrl: 'app/views/login.html'
                }
            }
        })

解释PLZ

<root><root>.main的父级,<root>.main.login本身是<root>的父级。 ui-view="loginModal"这里是一个隐式状态,它将您的基页作为模板(粗略地)。

对于命名视图,后代视图以其直接父模板为目标,除非另有明确说明。您的main存在于比var ndx = crossfilter( self.getStatus( contracts )); var skuDim = ndx.dimension( function(d){ return d.sku; }); var skuDimCount = skuDim.group().reduceCount(); var chartLineContractSku= dc.barChart("#chart-line-contract-sku"); chartLineContractSku .width(500) .height(200) .dimension(skuDim) .group(skuDimCount) .x(d3.scale.linear().domain(skus)) .legend(dc.legend()); 更高的祖先状态,因此您必须明确地定位该祖先。

有关视图定位的详细概述,请参阅https://github.com/angular-ui/ui-router/wiki/Multiple-Named-Views