Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 如何在多个ui视图中只更改一个。不改变状态_Html_Angularjs_Angular Ui Router - Fatal编程技术网

Html 如何在多个ui视图中只更改一个。不改变状态

Html 如何在多个ui视图中只更改一个。不改变状态,html,angularjs,angular-ui-router,Html,Angularjs,Angular Ui Router,在我的HTML中,我有三列,其中我呈现了3个不同的HTML模板 <div id="col1" ui-view="col1"></div> <div id="col2" ui-view="col2"></div> <div id="col3" ui-view="col3"></div> 我的问题是,如何在不更改状态的情况下,将col3的templateurl从ThirdTemplate.html更改为NewTempla

在我的HTML中,我有三列,其中我呈现了3个不同的HTML模板

 <div id="col1" ui-view="col1"></div>
 <div id="col2" ui-view="col2"></div>
 <div id="col3" ui-view="col3"></div>
我的问题是,如何在不更改状态的情况下,将
col3
templateurl
ThirdTemplate.html
更改为
NewTemplate.html

要回答这个问题:

我的问题是,如何在不更改状态的情况下将col3的templateurl从
ThirdTemplate.html
更改为
NewTemplate.html

这是不可能的。这是不打算也不支持的

UI路由器背后的思想是在状态之间导航(即使不使用url,
$state.go()
)。一旦找到/解析状态,其所有设置都将转换为实现(
controllerProvider
返回用于查找控制器的控制器或字符串,
templateProvider
返回模板等)

之后,状态稳定且稳定。我们可以使用一些其他角度特征(指令)来操纵DOM,但除非我们
更改状态
,否则其部分是固定的

在这种情况下,我们可以接受状态更改(包括当前状态重新加载),我们可以从模板提供程序中获利:

注:上述状态更改意味着:1)导航到其他或2)重新加载当前状态。


Thirdtemplate.html

检查此链接:我刚刚检查了,但不幸的是,我仍然不知道如何操作。您能帮我指出一下吗?@Ved我对这一点还不熟悉,但当我查看他们的示例时,我认为他们正在使用
ui-sref
更改状态。我想做的是做一些不同的事情,我想保持相同的状态,只是动态更改视图(templateURL)。您可以使用ng show和ng hide来更改视图吗?@Ved这是一种方法,但是通过这样做,我将在激活状态时加载我的所有模板,并且我将拥有很多这些模板,这就是我寻找动态更改它们的原因。嗨@Naresh,谢谢你的回答,但是你能补充几句解释吗?只有代码的答案并不总是不言自明的:)在Thirdtemplate.html页面中,使用ng include指令包含一个新的html(NewTemplate.html),根据您可以隐藏以前html的视图的条件,即在templateUrl(Thirdtemplate.html)@Nersh中-很好,就在那里;)只需编辑您的答案,将您在评论中所写的内容添加到其中!
$stateProvider
  .state('demo',{
    views: {
      'col1': {
        templateUrl: 'FirstTemplate.html'
      },
      'col2': {
        templateUrl: 'SecondTemplate.html'
      },
      'col3': {
        templateUrl: 'ThirdTemplate.html'
      }
    }
  })
<div ng-include="'NewTemplate.html'"></div>

<div ng-hide="'NewTemplate.html'">Thirdtemplate.html</div>