【问题标题】:How to change only one ui-view out of many. Without changing state如何只更改众多 UI 视图中的一个。不改变状态
【发布时间】:2015-01-20 14:16:26
【问题描述】:

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

 <div id="col1" ui-view="col1"></div>
 <div id="col2" ui-view="col2"></div>
 <div id="col3" ui-view="col3"></div>

将呈现所有这些的状态演示如下所示。

$stateProvider
  .state('demo',{
    views: {
      'col1': {
        templateUrl: 'FirstTemplate.html'
      },
      'col2': {
        templateUrl: 'SecondTemplate.html'
      },
      'col3': {
        templateUrl: 'ThirdTemplate.html'
      }
    }
  })

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

【问题讨论】:

  • 我刚刚做了,不幸的是我仍然不知道该怎么做。你能帮我指出来吗?
  • @Ved 我对此并不陌生,但是当我查看他们的示例时,我认为他们正在使用ui-sref 改变他们的状态。我想做的是不同的事情,我想保持相同的状态,只是动态地改变 view(templateURL)。
  • 你可以使用 ng-show 和 ng-hide 来改变视图..
  • @Ved 这是一种方式,但这样做我将在激活状态时加载所有模板,并且我将拥有很多这些模板,这就是原因我正在寻找一种动态更改它们的方法。

标签: html angularjs angular-ui-router


【解决方案1】:

回答这个问题:

我的问题是,如何将 col3 的 templateurl 从ThirdTemplate.html 更改为NewTemplate.html不改变状态。

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

UI-Router 背后的理念是在状态之间导航(即使不使用 url,$state.go()。一旦状态 TO 被找到/解决,它的所有设置都被转换成实现controllerProvider 返回控制器或用于查找控制器的字符串,templateProvider 返回模板等)

在那之后,状态是稳定而稳固的。我们可以使用其他一些角度特性(指令) 来操作 DOM,但除非我们会 change the state - 它的部分是固定的。

如果我们可以接受状态更改(包括当前状态重新加载),我们可以获利,例如来自模板提供者:

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

【讨论】:

    【解决方案2】:
    <div ng-include="'NewTemplate.html'"></div>
    
    <div ng-hide="'NewTemplate.html'">Thirdtemplate.html</div>
    

    【讨论】:

    • 嗨@Naresh,谢谢你的回答,但你能补充几句解释吗?仅代码的答案并不总是不言自明:)
    • 在 Thirdtemplate.html 页面中包含一个新的 html(NewTemplate.html) 使用 ng-include 指令根据条件您可以隐藏以前的 html 的视图,即在 templateUrl (Thirdtemplate.html) 中
    • @Nersh - 太好了,快到了 ;) 只需编辑您的答案,添加您在评论中写的内容!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-27
    • 1970-01-01
    • 1970-01-01
    • 2018-01-14
    • 1970-01-01
    相关资源
    最近更新 更多