Angularjs 如何正确使用嵌套管线修复以下示例?

Angularjs 如何正确使用嵌套管线修复以下示例?,angularjs,angular-ui-router,Angularjs,Angular Ui Router,所以,看来我毕竟没有得到ui路由器 下面是一个失败的例子: 实际的文件结构是: app/ app.js index.html main/ main.html header/ header.html footer/ footer.html sections/ content1/ content1.html content2/ ... index.html有一个简单的 main

所以,看来我毕竟没有得到
ui路由器

下面是一个失败的例子:

实际的文件结构是:

app/
  app.js
  index.html
  main/
    main.html
    header/
      header.html
    footer/
      footer.html
    sections/
      content1/
        content1.html
      content2/
      ...
index.html
有一个简单的

main.html
具有:

    <div ui-view="header"></div>
    <div ui-view></div>
    <div ui-view="footer"></div>
因此,我认为这意味着转到“/”将显示页眉、页脚,并在未命名的
ui视图中自动插入内容


事实并非如此。我做错了什么?

为了让它快速工作(不是预期的),我刚刚在页脚中添加了一个锚,现在它是

这意味着:

在“我的父视图”中搜索未命名视图

页脚视图是状态“app.main.content1”
的父视图,因此我们可以将其作为目标

还有其他选择

最可能的意图:,状态定义已更改:

.state("app.main.content1", {
  url: "/",
  views: {
    "@app": {
      templateUrl: "content1.html"
    }
  }
因此,现在我们通过绝对命名将
app
状态及其视图锚定
作为目标。见:

在幕后,每个视图都会被分配一个绝对名称,该名称遵循
viewname@statename
,其中viewname是view指令中使用的名称,state name是州的绝对名称,例如contact.item。您还可以选择以绝对语法编写视图名称

最后,我们甚至可以通过一个抽象状态和一个子级达到相同的效果,检查它:

现在,所有
UI路由器
magic正在根状态def中发生。我们首先以root(index.html)unmaed视图为目标,注入
main.html
。下一步-其他视图通过“header@app“-绝对命名


那将是最合适的方式

你在app和app.main中都设置好了吗?我不知道你在这里说什么……)这太棒了,我需要瞄准
@app
!只有两个澄清:为什么在第一个示例中页脚视图是内容视图的父视图?有没有更好的方法来做类似我现在正在做的事情?(
app
app.main
状态看起来几乎是多余的)我会说(就我的观点而言)两个抽象的父母太多了。我们只需要一个家长就能解决这个问题。看看我的最新答案如果这有帮助的话,那就太好了。享受奇妙的
UI路由器
;)如果不是太多,我可以麻烦你吗?:)@Radim@fusio-如果我知道的话,我愿意帮助你。。。我检查了一下已经有答案了。。。由chris(UI路由器开发人员)。。。所以这应该是你需要的。。。拜托,如果这对你不起作用。。。让我知道。不确定我是否能帮上忙,但我会尽力。。。
<div>
  im footer
  <div ui-view=""></div>
</div>
.state("app.main.content1", {
    url: "/",
    templateUrl: "content1.html"
  });
.state("app.main.content1", {
  url: "/",
  views: {
    "@app": {
      templateUrl: "content1.html"
    }
  }
$stateProvider
 .state("app", {
  url: "",
  abstarct: true,
  views: {
    "" : {
      templateUrl: "main.html",
    },
    "header@app": {
      templateUrl: "header.html"
    },
    "footer@app":{
      templateUrl: "footer.html"
    }
  }
})  

.state("app.content1", {
  url: "/",
  templateUrl: "content1.html",
});