如何使用 UI-Router 仅更新命名视图

2024-02-02

我正在创建一个网络应用程序来帮助学生学习科学、历史和数学。当您第一次登陆该网站时,我有一个主页/登陆页面。当您单击“开始”时,我会转到/exam/instructions。我的每个步骤都说明了我加载到的模板中的数学和科学ui-view="exam-detail"。目前全ui-view当我通过科学导航来回浏览指令时加载。理想情况下,我只想要一个分页区域和一个主题区域,并且只想要ui-view="exam-detail"使用正确的模板进行更新。

我根本没有使用过 UI-Router,任何帮助将不胜感激。

索引.html

<div ui-view></div>

状态考试>exam.html

<div class="state-exam">
    <nav ui-view="exam-pagination"></nav>
    <section ui-view="exam-detail"></section>
</div>

route.js

(function() {
'use strict';

angular
.module('studentPortal')
.config(routeConfig);

function routeConfig($stateProvider, $urlRouterProvider) {
$stateProvider
  .state('home', {
    url: '/',
    templateUrl: 'app/main/main.html',
    controller: 'MainController',
    controllerAs: 'main'
  })

  .state('exam', {
    url: '/exam/:step',
    abstract: true,
    templateUrl: 'app/state-exam/exam.html',
    controller: 'ExamController',
    controllerAs: 'examController',
  })

  .state('exam.instructions', {
    url: '/instructions',
    views: {
      'exam-pagination':{
        templateUrl: 'app/state-exam/exam-pagination.html'
      },
      'exam-detail' : {
        templateUrl: 'app/state-exam/exam-instructions.html'
      }
    }
  })

  .state('exam.math', {
    url: '/math',
    views: {
      'exam-pagination':{
        templateUrl: 'app/state-exam/exam-pagination.html'
      },
      'exam-detail' : {
        templateUrl: 'app/state-exam/exam-math.html'
      }
    }
  });
  $urlRouterProvider.otherwise('/');
  }

})();

一个工作的笨蛋 http://plnkr.co/edit/aR3cdYrDEY7FJvhLPRCj?p=preview

事实上,对于工作中的笨蛋来说,也有类似的问答:

Angular UI Router - 具有多种布局的嵌套状态 https://stackoverflow.com/q/25667660/1679310

这里的解决方案是移动static从孩子到父母的视角。不会为每个孩子重新加载(仅当父状态更改时才会重新加载视图)。我们将使用absolute naming (有关更多详细信息,请参阅包含的链接)

这就是代码调整

.state('exam', {
    url: '/exam/:step',
    abstract: true,
    // the root view and the static pagination view
    // will be defined here, so we need views : {}
    views: {
      '':{
        templateUrl: 'app/state-exam/exam.html',
        controller: 'ExamController',
        controllerAs: 'examController',
      },
      // absolute naming targets the view defined above
      'exam-pagination@exam':{
        templateUrl: 'app/state-exam/exam-pagination.html'
      },
    }
  })

  .state('exam.instructions', {
    url: '/instructions',
    views: {
      // 'exam-pagination':{}, // defined in parent
      'exam-detail' : {
        templateUrl: 'app/state-exam/exam-instructions.html'
      }
    }
  })

  .state('exam.math', {
    url: '/math',
    views: {
      // 'exam-pagination':{}, // defined in parent
      'exam-detail' : {
        templateUrl: 'app/state-exam/exam-math.html'
      }
    }
  });

另请检查此以获取有关绝对视图命名的更多详细信息

  • Angular UI 路由器嵌套视图 https://stackoverflow.com/q/25587280/1679310
  • Angular-UI 路由器:嵌套视图不起作用 https://stackoverflow.com/q/29585103/1679310

The 工作示例在这里 http://plnkr.co/edit/aR3cdYrDEY7FJvhLPRCj?p=preview

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 UI-Router 仅更新命名视图 的相关文章

  • 错误:使用本地文件时,summernote 不是一个函数

    我遇到了一个非常奇怪的问题 当我使用本地的 Summernote 文件加载文本编辑器时 发生了 summernote 不是函数 的情况 但是 如果我使用 cdn 文件加载编辑器 一切都会顺利 这是我的 HTML 标头代码
  • 如何通过 Javascript 获取 Bootstrap 版本?

    有没有办法通过调用函数来获取Bootstrap版本 我做了一些研究 但找不到任何方法 版本信息包含在开头的注释中 如下所示 引导程序 v3 3 7 http getbootstrap com http getbootstrap com 版权
  • 谷歌地图 - 缩放时保持居中

    在 Google 地图中 我希望在放大或缩小时能够将地图中心保持在我所在位置的标记上 这是 Ingress 所做的事情 无论您在何处双击 或双击 或在何处捏合 地图都会保持以标记为中心 所以有可能 我现在想到的最好的是 google map
  • 将输入包装在角度指令中

    我的想法是将输入包装到自定义指令中 以保证整个网站的外观和行为一致 我还想包装 bootstrap ui 的日期选择器和下拉菜单 此外 该指令应该处理验证并显示工具提示 HTML 应该看起来像这样
  • Photoswipe + JQM:返回事件问题

    document on pagecreate function jsonp url URL TO GET JSONP callbackParameter get photo success function json status var
  • JS - 文件读取器 API 获取图像文件大小和尺寸

    您好 我正在使用以下代码来使用文件读取器 API 获取上传图像
  • 如何制作像 Twitter 一样带有字符限制突出显示的文本区域?

    Twitter 的提交推文文本框会突出显示超出字符限制的字符 如您所见 超出字符限制的字符以红色突出显示 我怎样才能实现这样的目标 您将在这里找到必要的解决方案和所需的代码 超过 140 限制 即变为负数 时如何插入 标签 https st
  • jqGrid 3.4 中的自定义数据工具提示

    我一直在使用优秀的 jqGrid 插件 它运行得很好 不过最近 我被要求为网格实现一些自定义工具提示 现在文档 http www secondpersonplural ca jqgriddocs index htm非常彻底 但它没有解决如何
  • JavaScript 检查 null 与 undefined 以及 == 和 === 之间的区别

    如何检查变量是否null or undefined和有什么区别null and undefined 有什么区别 and 很难在 Google 上搜索 如何检查变量是否null or undefined 是变量null if a null o
  • 从 jsonp fetch Promise 获取 json

    我刚刚开始使用react native 并且我正在以文档中的经典示例作为基础 fetch https facebook github io react native movies json then response gt response
  • gmap.js 覆盖层上的 MouseOver 事件?是否可以?

    我在用着gmap js http hpneo github io gmaps examples html我正在尝试在我创建的覆盖标记上创建鼠标悬停事件 这是一个 jsFiddle gt http jsfiddle net LXv87 htt
  • 如何使用Javascript统计通过ajax返回的
  • 的数量?
  • 我有一个 ajax 代码 它将列表项返回为 li one li li Two li 每次都会返回不同数量的 li 的 我想查一下数量 li li 它返回 如何使用 JavaScript 检查它 给你 returnedHTML find li
  • 将 javascript 对象分配给 html 元素的最佳方法

    我通过 ajax 获取一个 javascript 对象 我需要将此对象附加到 div 以便稍后恢复 例如 在单击事件上 如果我有一个变量而不是一个对象 我会将它推入 html 标签 如下所示 div div 我会像这样恢复它的价值 var
  • Openlayers 3 中心地图

    我在唱歌开放层 3 http openlayers org en v3 0 0 apidoc 显示地图 我想使用经纬度坐标将地图居中 我正在使用快速入门代码 http openlayers org en v3 1 1 doc quickst
  • 将 div 移动到 dom 中的其他位置

    以下代码被动态插入到 DOM 中 但是 我想将 div example 从原来的位置移动并将其添加到 wrapper 前面 我如何使用 jQuery 来实现这一目标 div div div div div div div div I tri
  • 找到每个元素的所有父元素

    我正在尝试创建一个面包屑而不使用 url 路由提供者 并且不使用 jQuery 我有一棵这样的树 Humans Trees Animals Cats Lions Dogs Terrier Bulldog Cocker Cars 我希望当我点
  • 提交ajax表单并停留在同一页面不起作用

    我想将用户的评论存储在我的数据库中 当用户提交时 我不想将他们重定向到新页面 我有以下代码 但它不起作用 我的 HTML 代码
  • NESTJS AWS Lambda 和 Sequelize 连接池

    由于我已经给出了下面代码片段中提到的池参数 因此是否有必要在每次 lambda 调用后关闭连接 这个 aws lambda 函数应该每分钟触发一次 池参数仅足以关闭连接吗 export const databaseProviders pro
  • Cookies - 日期过期不起作用,关闭浏览器时cookies将被清除

    我试图在 cookie 中保存用户电子邮件 1 年 但当浏览器关闭时 cookie 会被删除 这是我尝试使用的代码 document cookie userEmail email document cookie expires Wed 31
  • 并行运行 Angular 和 AngularJS 框架

    我找到了描述如何将 Angular 2 组件集成到 AngularJS 中的资源 但所有这些都涉及像 Angular 项目一样设置 AngularJS 项目 需要 TypeScript 的转译器 需要 ES6 需要 import 语句 我想

随机推荐