当嵌套的ui-views存在时,如何定位特定的ui-view元素

wha*_*ean 8 angularjs angular-ui-router

想象一下html如下:

<body ng-app="blocksApp">

Some content goes here

<div ui-view="monty">

    <div ui-view="dave">Aaa</div>
    <div ui-view="pete">Bbb</div>
    <div ui-view="steve">Ccc</div>

</div>

</body>
Run Code Online (Sandbox Code Playgroud)

使用ui-router,有没有办法编写一个状态,将"dave"设置为一个新的html片段,同时保持其他所有内容不受影响.

我想这样做:

$stateProvider
        .state('daveonly',{
            url: "/dave",
            views:{
                'dave':{template:"Dave now has content"}
            }
        })
Run Code Online (Sandbox Code Playgroud)

我无法让它发挥作用.我想这样做的原因是有时我想用部分更新替换'Dave',有时我想用部分更新替换整个'monty'.似乎ui-router不喜欢在同一个html片段中嵌套ui-views.

mar*_*bug 3

从一个角度我想建议:

  • 将 html 代码移至“.tpl.html”文件
  • 使用“templateUrl”而不是“模板”

并检查以下内容是否适合您:

$stateProvider.state("daveonly", {
    views: {
        "dave": {
            templateUrl: 'daveonly.tpl.html',
        },
        "pete": {
            templateUrl: 'pete.tpl.html',
        },
        "steve": {
            templateUrl: 'steve.tpl.html',
        },        
    }    
});
Run Code Online (Sandbox Code Playgroud)

请查看第 1 页第 2 页了解更多详细信息。

但从另一个角度来看,仅使用一个 ui 视图并重新设计当前的 ui 视图以成为控制器/服务的适当指令可能更有用:使用控制器/服务的指令可以帮助正确管理部分重新加载,并且编写单元测试。