想象一下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>
使用ui-router,有没有办法编写一个状态,将“dave”设置为一个新的html片段,同时保持其他所有内容不变.
例如我想这样做:
$stateProvider .state('daveonly',{ url: "/dave",views:{ 'dave':{template:"Dave now has content"} } })
我无法让它发挥作用.我想这样做的原因是有时我想用部分更新替换’Dave’,有时我想用部分更新替换整个’monty’.似乎ui-router不喜欢在同一个html片段中嵌套ui-views.
从一个角度来看,我想建议:
>将HTML代码移动到’.tpl.html’文件
>使用’templateUrl’而不是’template’
并检查以下内容是否适合您:
$stateProvider.state("daveonly",{ views: { "dave": { templateUrl: 'daveonly.tpl.html',},"pete": { templateUrl: 'pete.tpl.html',"steve": { templateUrl: 'steve.tpl.html',} });
但是从另一个角度来看,仅使用一个ui-view并重新设计当前的ui-views以成为具有控制器/服务的适当指令可能更有用:使用带有控制器/服务的指令可以帮助正确地管理部分重新加载和写单元测试.