UI Router 从列表页面加载详细信息页面

2024-01-12

使用 ui-router 的 AngularJS 应用程序。 我的列表页面加载正确,但是当单击列表页面上的链接时,我的 url 发生了变化,但页面上的 html 没有变化,它仍然保留在列表页面上。这个路由有什么问题吗?

app.js

var myApp = angular.module('myApp', ['ui.router']);

myApp.config([
    '$stateProvider', function($stateProvider) {
        $stateProvider
            .state('products', {
                url: '',
                templateUrl: 'Scripts/templates/manageProducts/products.list.html',
                controller: 'productListCtrl'
            })
            .state('products.detail', {
                url: '/:id',
                templateUrl: 'Scripts/templates/manageProducts/products.detail.html',
                controller: 'productDetailCtrl'
            });
    }
]);

索引.html

<div ng-app="myApp">
    <div ui-view></div>
</div>

在 products.list.html 模板上:

<a ui-sref="products.detail({ id: 1 })">Detail for Item 1</a>

我应该使用 UI Router 吗?列表和详细信息页面是两个不同的屏幕。


有一个plunker http://plnkr.co/edit/YkfRUOMlgS5qW9f4ET6p?p=preview,这应该有助于给出答案:

我应该使用 UI Router 吗?列表和详细信息页面是两个不同的屏幕。

如果我们继续productDetails状态,我们确实失去了一些东西(如果不是很多的话).

In the example http://plnkr.co/edit/YkfRUOMlgS5qW9f4ET6p?p=preview我们可以看到这个状态定义:

$stateProvider

    // parent state for products.detail
    // the important thing here is that it must contain
    // ui-view="details", because the child is targeting it
    .state('products', {
      url: '/products',
      templateUrl: 'products.list.html',
      controller: 'productListCtrl'
    })
    // here, we will hook into the parent ui-view
    // that means one essential thing:
    // our scope, will be inherited from parent
    .state('products.detail', {
      url: '^/:id',
      views: {
        'detail': {
          templateUrl: 'products.detail.html',
          controller: 'productDetailCtrl'
        }
      },
    })

到目前为止,我们已经看到了标准嵌套状态父/子。接下来我们将定义子状态,同时针对根ui-view=""

    // this one is as the productDetails
    // it skips parent and targets the root view
    // despite of the fact, that it is defined as sub-state of the products !
    // we won't get anything from parent state
    .state('products.detailAsRoot', {
      url: '^/product/:id',
      views: {
        '@': {
          templateUrl: 'products.detail.html',
          controller: 'productAsRootCtrl'
        }
      },
    });

首先,这里对 javascript/scopes 中的继承进行了详尽的解释:

  • AngularJS 中的范围原型/原型继承有哪些细微差别? https://stackoverflow.com/questions/14049480/

而且,重要的是,ui-router 中的范围是以“视图嵌套”的方式继承的

基本引用:

请记住范围属性如果状态视图是嵌套的,则仅沿状态链继承。范围属性的继承与状态的嵌套无关,而与视图(模板)的嵌套有关。

那么这个答案是关于什么呢?说:如果我们会使用ui-router,最大的好处就是作用域继承。父母可以做某件事一次......孩子可以重复使用它。

另请参阅:

  • 当状态更改时,如何防止命名视图重新加载? AngularJS UI 路由器 https://stackoverflow.com/questions/23568908/
  • Angular UI Router 嵌套状态在子状态中解析 https://stackoverflow.com/a/20558850/1679310
  • The plunker http://plnkr.co/edit/YkfRUOMlgS5qW9f4ET6p?p=preview与此处描述的工作示例
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UI Router 从列表页面加载详细信息页面 的相关文章

  • 没有找到 angular.min.js.map,这到底是什么?

    When I load the page and check chrome console i find these errors Angular 中的地图文件到底是什么 我确实引用了 Angular min js 但没有引用 Angula
  • 是否可以将 RestAngular.setBaseUrl 用于两个 api 访问点?

    是否可以使用具有 2 个不同 API 的 Restangular 来工作 我想拥有setBaseUrl 对彼此而言 只需创建两个或多个 Restangular 服务并根据需要配置它们 然后注入您想要使用的模块 UPDATE 这段代码来自 r
  • angularjs:如何向资源对象添加缓存?

    在 http 中添加缓存非常简单 通过传递cache true http docs angularjs org api ng http https docs angularjs org api ng service 24http有缓存选项
  • AngularJS 数据绑定在 ng-bind-html 中?

    是否可以将作用域变量的数据绑定到即将绑定为 ng bind html 的 html 即 我有一个 html div caption div 我的角度模板看起来像 div div 范围变量的值caption在角度控制器中设置 所以 我想绑定数
  • 在 Braintree 中使用 AngularJS 加密信用卡详细信息

    我正在使用 Braintree 作为支付网关 但遇到了一个问题 我正在发送信用卡信息和其他用户详细信息 出于安全目的 信用卡信息必须进行加密 Braintree 对此进行了加密 包括以下内容 braintree onSubmitEncryp
  • Restangular - _.contains() 不是一个函数

    如果您最近通过 Bower 更新了 Restangular 它将安装最新的 Lodash 新的 4 0 然而 这是一个问题 因为 Restangular Angular 现在会抛出错误 contains 不是函数 你怎么解决 解决方案非常简
  • 如何将 .env 文件变量传递给 webpack 配置?

    我是 webpack 的新手 几乎完成了所有构建部分 但现在的问题是我想将环境变量从 env 文件传递 到 webpack 配置 以便我可以通过以下方式将该变量传递到我的构建文件webpack DefinePlugin plugin 目前我
  • 如何使角度表单只读并可使用编辑按钮进行编辑?

    有没有办法让整个 Angular 表单只读 然后在单击编辑时可编辑 您可以按照当前答案 评论中的建议单独禁用所有表单元素 也可以将所有表单元素包装在 fieldset 更多信息 https developer mozilla org en
  • 在 angularJS 中覆盖模块值/常量的最佳方法

    我用 angularJS 编写了一个模块 封装了所有后端通信 为了获得更大的灵活性 我将 api 前缀作为模块上的常量值 可能是值 因为我没有在配置阶段使用它 所以像 angular module myapp data constant a
  • 使用 AngularJS 动态加载 Google 地图 API

    我正在尝试使用 AngularJS 加载 Google Maps API 以及该部分的控制器 search controller GoogleMaps scope sce function GoogleMaps scope sce var
  • 在控制器之间共享异步数据,无需发出多个请求

    我正在尝试做一个单曲 http请求获取我的 JSON 文件之一并在我的所有控制器中使用该数据 我在 Egghead io 上看到了如何跨多个控制器共享数据 我还阅读了这个 StackOverflow 问题 在 angular js 中的控制
  • AngularJS 无限滚动大量数据

    所以我尝试使用 AngularJS 创建一个无限滚动表 类似于 http jsfiddle net vojtajina U7Bz9 http jsfiddle net vojtajina U7Bz9 我遇到的问题是 在 jsfiddle 示
  • 离子初始加载时间

    我正在使用 Ionic 构建一个简单的应用程序 但我的应用程序在冷启动时的初始加载时间方面存在性能问题 这是我所做的 collection repeat 代替带有 track by 的 ng repeat 原生滚动 overflow scr
  • 如何在 AngularJS 中测试具有解析属性的控制器?

    如何测试具有解析属性的控制器 它会抛出一个错误 未知提供者 InitProvider 在测试期间 这是可以理解的 我该如何测试它 我使用路由配置中的 init 属性来加载数据 并在控制器实例化时将其传递给控制器 以便在加载数据之前路由不会更
  • Typescript 中的 Angular 服务具有依赖注入和缩小功能

    我现在正在努力让我的头脑围绕 Angularjs 我目前正在寻找服务 我也使用打字稿来编写代码 现在 从网络上的示例中 我看到人们在打字稿中使用如下所示的服务 class Service constructor private http n
  • 如何创建一个非单例的 Angular JS 服务?

    因为每个服务都是单例 调用 injector get 每次仍然给我相同的实例 如何在另一个服务中使用一个服务的多个实例 请记住 我的非单例类的声明不得污染全局命名空间等 我的示例如下 我希望 injector get serviceCall
  • 如何从 Angular 计时器获取当前时间

    我正在测试角度计时器 http siddii github io angular timer 并且发现自己想知道如何在控制器中获取当前时间 以便将其用于我可能有的任何目的 例如 我想当达到特定的分钟数时 将计时器的字体颜色设置为红色 但我完
  • 从变量值动态设置 ng-controller

    我正在使用 AngularJs 和 NodeJS 开发一个应用程序 我对将控制器的名称设置为主控制器中的变量的值感到震惊 为了更好地解释它 我的 index html 看起来像这样 tbody tr td td td member task
  • Jasmine 单元测试不等待承诺解析

    我有一个有角度的服务 它具有像这样的异步依赖项 function angular module app factory myService q asyncService function q asyncService var myData
  • 通过查询字符串传递“Bearer”时 SignalR 身份验证失败

    我想在 SignalR 中启用身份验证 而服务器托管在 ASP NET WebAPI 中 我使用 OAuth Bearer 身份验证 客户端是 AngularJS 在客户端 我最初通过 HTTP 标头传递 Bearer 令牌 它与 WebA

随机推荐

  • 如何在Python中的用户定义函数中实现“仅位置参数”?

    如何为用户在 python 中定义的函数实现 仅位置参数 def fun a b print a b fun 5 2 25 fun a 5 b 2 should show error 在 Python 3 8 之前 语法只是文档化的 从 开
  • javascript 用标签包裹文本

    我正在向tinyMCE添加一个按钮 例如 我想知道如何使用javascript将文本包装在标签内 此突出显示的文本被包装在标签内 highlight highlight 标签 现在整个tinymce function tinymce cre
  • Mac OS X Lion 上的 MAMP 2.0.1 与 Ruby on Rails 3.2.0

    以前有人问过这个问题 但我找不到比 2010 年更新的结果 两年内可能会发生很多变化 事实上 从那以后就没有人问过这个问题 这让我想 也许我错过了一些东西 所以 有没有一种简单的方法可以设置 Ruby On Rails 3 2 0 以在 M
  • 无法从 eclipse 运行 Tomcat 7

    我正在使用 Eclipse EE Helios 我想将我创建的项目部署到 Tomcat 7 我已经下载了Tomcat并创建了动态项目 我打开了Server View在 Eclipse 中 我按下New在 Eclipse 中定义一个新的 To
  • 如何按定义的顺序迭代 Python 字典?

    我试图迭代以特定顺序定义的字典 但它总是以与我在代码中定义的顺序不同的顺序进行迭代 这只是我正在尝试做的事情的一个基本示例 我正在迭代的字典更大 具有更复杂的命名键 并且不按字母 数字顺序排列 level lookup PRIORITY 1
  • 需要将光标置于文本区域中文本的开头

    我体内有这个并且有效 onLoad document forms post message focus 但我需要将光标放在textarea在任何现有文本的开头 而不是结尾 这就把它放在最后了 function moveCaretToStar
  • 布尔注释导致重复?

    我正在尝试实现一个基于外键表的基本 收藏夹 系统 假设我有以下简单模型 class Item models Model id models IntegerField class User models Model id models Int
  • 如何在 JavaScript 中复制 div

    我想知道如何复制DIV通过 JavaScript 多次编辑元素 而不在我的 html 代码中复制 DIV 假设您选择了 div 执行以下操作 var myDiv document getElementById myDivId DOM API
  • Twitter Bootstrap 使用 JSON 进行预输入

    我如何将 Twitter Bootstrap Typeahead 与 JSON 结合使用 我的 Bootstrap 版本是2 2 1 我的 JSON 响应 label Sistemski Administrator value 1 labe
  • 完全滑动 UITableViewCell 删除 UITableView iOS 8

    我想模仿 UITableViewCell 的滑动删除功能 就像 iOS 8 中的邮件应用程序一样 我不是指滑动以显示删除按钮 我指的是当你滑动时 它会显示 3 个操作 但如果你继续向左滑动 电子邮件就会被删除 在 iOS 8 中 UITab
  • Ionic - 仅在具体页面中显示侧面菜单

    我正在使用 Ionic Framework 开发一个应用程序 我只想在一些具体视图中显示侧面菜单 而不是在每个视图中 我有我的菜单 html file
  • ORA-12519,TNS:未找到适当的服务处理程序

    我正在正确关闭休眠连接 但在几次点击或刷新一些页面后我收到此错误 我不明白有什么问题 我还检查了会话数量 它也通过以下命令增加 并且还给出了程序代码 托管bean代码 public List
  • Whatsapp 身份验证如何运作?

    我想开发一个移动应用程序并使用类似whatsapp的用户注册 现在我记得几年前讨论过的安全问题 Whatsapp 过去仅通过电话号码和 IMEI 来验证用户身份 当然 这并不是真正安全 但我真的不知道如何更安全 现在我已经很长一段时间没有听
  • 调用 python webbrowser 时抑制/重定向 stderr

    我有一个 python 程序 它在新的浏览器窗口中的单独选项卡中打开多个网址 但是当我从命令行运行该程序并使用打开浏览器时 webbrowser open new url Firefox 的 stderr 打印到 bash 查看文档我似乎找
  • 术语的含义 - 资源获取就是初始化

    我知道 RAII 是做什么的 这都是为了在代码抛出异常时防止内存泄漏等 现在我想明白这句话的意思smart term http en wikipedia org wiki 收购 http en wikipedia org wiki Acqu
  • 如何在点击按钮时发出小闪光?

    所以我正在制作一个有超过 100 个按钮的 Android 应用程序 但是你知道当你正常点击一个按钮时 当你不改变背景或任何东西时 它会闪烁橙色 然而 由于我已经为按钮添加了背景颜色 当点击它们时 它只会进入下一个屏幕 并且您无法看出您已经
  • 在Monaco编辑器中,如何从IEditor界面获取选定的文本

    迷失在 API 的电报文档中 如何从 IEditor 界面获取选定的文本 这selection返回的对象getSelection只有行号和列号 那么我是否需要在编辑器的文本中搜索该文本 并且 与返回的所有其他选择相比 主要选择是什么getS
  • 为什么我的 ibtool 失败,退出代码为 255?

    突然间我无法构建我的项目 我收到以下编译器错误 Applications Xcode app Contents Developer Platforms iPhoneSimulator platform Developer usr bin i
  • LLVM 检索 AllocaInst 的名称

    我正在尝试检索传递给 a 的指针的名称cudaMalloc https docs nvidia com cuda cuda runtime api group CUDART MEMORY html group CUDART MEMORY 1
  • UI Router 从列表页面加载详细信息页面

    使用 ui router 的 AngularJS 应用程序 我的列表页面加载正确 但是当单击列表页面上的链接时 我的 url 发生了变化 但页面上的 html 没有变化 它仍然保留在列表页面上 这个路由有什么问题吗 app js var m