Angular ui-router 完成条件视图

2023-11-21

我正在问一个与这个问题类似的问题:UI 路由器条件 ui 视图?,但我的情况有点复杂,我似乎无法得到所提供的工作答案。

基本上,我有一个 url,可以用两种截然不同的方式呈现,具体取决于 url 指向的实体类型。

这是我目前正在尝试的

    $stateProvider
        .state('home', {
            url : '/{id}',
            resolve: {
                entity: function($stateParams, RestService) {
                    return RestService.getEntity($stateParams.id);
                }
            },
            template: 'Home Template <ui-view></ui-view>',
            onEnter: function($state, entity) {
                if (entity.Type == 'first') {
                    $state.transitionTo('home.first');
                } else {
                    $state.transitionTo('home.second');
                }
            }
        })
        .state('home.first', {
            url: '',
            templateUrl: 'first.html',
            controller: 'FirstController'
        })
        .state('home.second', {
            url: '',
            templateUrl: 'second.html',
            controller: 'SecondController'
        });

我设置了一个 Resolve 来从静态服务中获取实际实体。 一切似乎都在正常工作,直到我真正根据类型到达 TransitionTo 为止。

转换似乎有效,但解析重新触发并且 getEntity 由于 id 为空而失败。

我尝试将 id 发送到transitionTo 调用,但它仍然尝试进行第二次解析,这意味着从其余服务中获取实体两次。

似乎正在发生的事情是,在 onEnter 处理程序中,状态实际上尚未更改,因此当转换发生时,它认为它正在转换到一个全新的状态而不是子状态。这进一步得到证明,因为当我删除该实体时。从transitionTo中的状态名称来看,它认为当前状态是root,而不是home。这也阻止我使用“go”而不是“transitionTo”。

有任何想法吗?


The 模板网址也可以是一个函数,因此您可以检查类型并返回不同的视图,并在视图中定义控制器,而不是作为状态配置的一部分。您无法向 templateUrl 注入参数,因此您可能必须使用 templateProvider。

$stateProvider.state('home', {
  templateProvider: ['$stateParams', 'restService' , function ($stateParams, restService) {
    restService.getEntity($stateParams.id).then(function(entity) {
        if (entity.Type == 'first') {
              return '<div ng-include="first.html"></div>;
        } else {
              return '<div ng-include="second.html"></div>';
        }
    });
  }]
})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angular ui-router 完成条件视图 的相关文章

随机推荐

  • 无法在 Visual Studio 2013 中打开 Web 项目

    昨天我安装了 Visual Studio 2013 的更新 Visual Studio 2013 Update 2 但从那时起它就无法正常工作 更新花费了相当长的时间 所以我让它运行了一夜 当我今天早上回到我的工作站时 我无法在我们的解决方
  • “Rscript”不被识别为内部或外部命令、可操作程序或批处理文件

    shell exec Rscript C R R 3 2 2 bin code R 这是对脚本的调用 调用上述脚本时 会发生错误 我试图从上述路径调用我的 R 脚本 但没有显示任何输出 在检查 PHP 的错误日志时 它说 Rscript 未
  • 为什么Matlab和Octave中inv()和pinv()的输出不相等?

    我注意到如果 A 是一个 NxN 矩阵并且它有逆矩阵 但是 inv 和 pinv 函数输出的内容是不同的 我的环境是Win7x64 SP1 Matlab R2012a Cygwin Octave 3 6 4 FreeMat 4 2 看看 O
  • 向 requestAnimationFrame 回调的函数添加额外的参数

    我希望创建一个函数 使用 requestAnimationFrame 和增量时间在 HTML5 画布上将图像元素滚动 x 像素超过 y 时间 我不知道的是 当 requestAnimationFrame allready 使用一个参数 DO
  • 上下文中的多个包:组件扫描、spring config

    如何在 spring servlet xml 文件中添加多个包context component scan元素 我努力了
  • 如何使用 TensorFlow 2.0 打乱两个 numpy 数据集?

    我想写一个函数TensorFlow 2 0比在每次训练迭代之前对数据及其目标标签进行打乱 假设我有两个 numpy 数据集 X 和 y 代表用于分类的数据和标签 我怎样才能洗牌同时 Using sklearn这很简单 from sklear
  • 扩展 Android 的语音搜索应用

    是否可以扩展语音搜索应用程序 我知道我可以在自己的应用程序中添加一个按钮来启动语音识别对话框 但我想知道是否可以扩展当您长按物理 搜索 键时自动启动的语音搜索应用程序 send text to contact message listen
  • 关于 Vue 3 + TypeScript 和 Augmenting-Types-for-Use-with-Plugins 的问题

    有谁知道如何使用 Vue3 和 TypeScript 实现类型增强的工作示例 我一直在尝试遵循 Vue2 文档 在 Vue3 中使用相同的内容 但没有成功 并且在过去 3 个小时的搜索中没有任何结果 看来Vue对象在vue class co
  • 检查矩阵行是否等于 R 中的矢量(矢量化)

    我很惊讶这个问题没有被问到 也许答案会澄清原因 我想将矩阵的行与向量进行比较 并返回该行是否 处处的向量 请参阅下面的示例 我想要一个矢量化解决方案 没有应用函数 因为矩阵太大而无法缓慢循环 假设也有很多行 所以我想避免重复向量 set s
  • 将 Microsoft SQL 复制到其他数据库

    我希望能够将整个数据库从 Microsoft SQL 复制到另一个 Web 友好的数据库 例如 CouchDB 甚至 mySQL 我需要每天进行复制 只是想知道是否可能 如果可以 我将如何用最少的编码来完成它 Thanks 这是可能的对称D
  • 在网页上查找广告

    我正在编写一个应用程序 试图确定页面上是否有广告 当前正在使用 python 通过 selenium webdriver 使用浏览器驱动 我认为 iframe 内存在大量广告 并且我制作了一个循环来查看每个框架的内部 browser web
  • AngularJS 中用于分页的限制和偏移数据结果

    AngularJS在调用支持Limit和Offset的外部数据资源时是否有Limit和Offset请求方法 我想有一个比这更优雅的解决方案 我通过路线参数传递限制和偏移量 function ListCtrl scope http route
  • ExecCommand 函数的定义是否为粗体?

    ExecCommand 提供了一种在 iFrame 中将文本加粗 斜体 下划线等的方法 但它缺少创建选项
  • Flask WTF“StringField”对象没有属性“translate”

    我对 Python 比较陌生 并且一直在关注Miguel Grinberg Flask 超级教程 我有一个非常简单的表单 当我尝试提交时 我收到以下错误 AttributeError StringField 对象没有属性 translate
  • Postgresql join_collapse_limit 和查询规划的时间

    我刚刚发现join collapse limit一直在阻止 PostgreSQL 规划器找到更好的连接顺序 就我而言 将限制增加到 10 默认为 8 允许规划器将搜索时间从约 30 秒缩短到约 1 毫秒 这是更容易接受的 该文档表明 设置此
  • 如何使用 Electron 运行和打包外部可执行文件?

    例如 我有一个编译好的二进制文件cudaDeviceQuery它以 JSON 形式返回设备列表 这是一段代码 export default function cudaDeviceQuery Promise
  • Laravel 对所有页面进行身份验证检查

    我已经创建了身份验证 并且它运行良好 但检查内页时存在一些问题 例如 Route get array before gt auth do gt function return View make home index 索引页面仅对登录用户可
  • 从手机号码中提取国家代码

    我有一个带有国家 地区代码的手机号码列表 例如 919638095998 号码 我已经提到了libphonenumber 谷歌示例另外 首先我们需要传递国家 地区 2 位数代码 我最初不知道 那么我怎么知道这个号码来自哪个国家呢 我还得到了
  • CouchDB读取授权

    在couchdb网站 gt 技术概述 gt 安全性和验证 http couchdb apache org docs overview html 它写道 在读者访问 部分 为了保护文档内容 CouchDB文档可以有一个读者列表 这是允许阅读文
  • Angular ui-router 完成条件视图

    我正在问一个与这个问题类似的问题 UI 路由器条件 ui 视图 但我的情况有点复杂 我似乎无法得到所提供的工作答案 基本上 我有一个 url 可以用两种截然不同的方式呈现 具体取决于 url 指向的实体类型 这是我目前正在尝试的 state