Angular + ui-router:$stateChangeSuccess 在状态 b 上触发,但不在 a.b 上触发

2024-04-06

用户界面路由器 0.2.11 / AngularJS 1.3.0

我很难理解为什么 BarCtrl 中的 $stateChangeSuccess 事件处理程序没有在 #/foo/bar 上触发。它在#/bar 上触发。

#/foo/bar -> Console: foo
#/bar -> Console: bar

我想要实现的是,在 #/foo/bar 上,首先触发 FooCtrl 的处理程序,然后触发 BarCtrl 的处理程序:

foo
bar

My code:

var app = angular.module('foobar', ['restangular', 'ui.bootstrap', 'ui.router'])
app.config(function($stateProvider, $urlRouterProvider) {

  $stateProvider.state('root', {
    url: "/",
    template: '<div ui-view></div>'
  })
  .state('foo', {
    abstract: true,
    url: "/foo",
    controller: 'FooCtrl',
  })
  .state('foo.bar', {
    url: "/bar",
    controller: 'BarCtrl',
  })
  .state('bar', {
    url: "/bar",
    controller: 'BarCtrl',
  });
})

app.controller('FooCtrl', function($scope) {
  $scope.$on('$stateChangeSuccess', function(event, toState, toParams, fromState, fromParams){
    console.log("foo");
  });
});

app.controller('BarCtrl', function($scope) {
  $scope.$on('$stateChangeSuccess', function(event, toState, toParams, fromState, fromParams){
    console.log('bar')
  });
});

在准备小提琴时,我发现了自己的错误。我认为抽象视图不需要模板,因为它们无法访问,并且假设 foo 的父状态的模板将接管,但事实并非如此。

为了实现我想要的,我只需要添加:

  template: '<ui-view />',

Like so:

.state('foo', {
  abstract: true,
  url: "/foo",
  controller: 'FooCtrl',
  template: '<ui-view />',
})

相关讨论:https://github.com/angular-ui/ui-router/issues/325 https://github.com/angular-ui/ui-router/issues/325

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

Angular + ui-router:$stateChangeSuccess 在状态 b 上触发,但不在 a.b 上触发 的相关文章

随机推荐

  • 在子布局中添加视图后,scrollTo、scrollBy、smoothScrollTo、smoothScrollTo 在 ScrollView 中不起作用

    我有 Horizo ntalScrollView 里面有子布局 将视图添加到子布局后 我无法将 Horizo ntalScrollView 滚动到滚动条的右侧 scrollTo scrollBy smoothScrollTo smoothS
  • 托管配置文件中的 Android 请勿打扰 (DnD) 权限

    我有以下问题 我的应用程序分布在 MDM 系统上 并在 Android for Work 中运行 在某些情况下 应用程序必须暂时终止 DnD 模式 为此 用户必须在应用程序启动时授予 DnD 权限 到目前为止 一切都很好 如果我将应用程序安
  • 我正在寻找一个简单但实​​用且强大的 .net IOC/DI 框架

    我将在一个由经验较少的开发人员组成的项目中使用它 因此像 Spring NET 这样的复杂框架不是一个选择 我在想 Ninject 温莎城堡 结构图 哪个会提供适度的学习曲线而不失去灵活性 另一个问题 放置配置的正确位置在哪里 由于 3 层
  • 错误:index_not_found_Exception

    我使用 ELK 堆栈来分析我的日志文件 我上周测试过 一切正常 今天 我进行了测试 但当我输入 http localhost 9200 iot log count http localhost 9200 iot log count iot
  • 使用持续时间匹配组合三个不同的时间戳数据帧

    我有三个具有不同数据帧和频率的数据帧 我想将它们组合成一个数据框 第一个数据框收集来自太阳的阳光 如下所示 df1 index light data 05 01 2019 06 54 00 000 10 05 01 2019 06 55 0
  • javascript:长按书签

    我需要识别 JavaScript 书签中的长按 所以 我不能使用 jQuery 也不能使用 onclick 事件和类似事件 这可能吗 如何实现 onmousedown call setTimeout 在长按期间 如果允许超时 它将调用其函数
  • 如何并排放置两个 iframe

    我尝试了几种代码 例如下面的代码 div class box div div div
  • 我们可以在数据绑定中连接两个属性吗?

    我们可以在绑定表达式中将两个属性连接在一起吗 如果可能的话 无需转换器或无需编写两个文本块并单独设置它们 如果你想展示 请说FirstName and LastName 在一个单一的TextBlock 那么你可以这样做
  • 在 Internet Explorer 中使表单元素 onchange 冒泡

    如何使各种表单元素的 onChange 事件向上冒泡到 Internet Explorer 中的父表单对象 当选择框 单选按钮 几乎任何内容 在 IE 中发生更改时 不会触发父窗体的 onChange 我的表单是动态变化的 因此很难通过监听
  • 如何在rails中设置postgresql命令超时

    我正在使用heroku 和heroku postgresql 如何设置 db 命令超时 以便在 sql 命令花费时间超过 10 秒时出现异常 像这样配置你的database yml 关键是变量哈希 defaults default adap
  • 意外提交敏感信息 - GitLab

    我不小心提交了包含敏感数据的文件 我需要通过删除敏感数据来更新该文件 并确保旧版本不会出现在历史记录中 据我所知 那些在本地克隆了存储库的人仍然可以访问它 但是 一旦他们提取最新的数据 是否可以通过设置方式让他们看不到敏感数据继续前进或无法
  • 从矩阵中提取行并在 MATLAB 中创建一个新矩阵

    我有一个矩阵 X 1 1 2 2 3 3 4 4 Y 2 4 我想要一个结果矩阵z只有第 2 行和第 4 行 中的值Y of X 那是 Z 2 2 4 4 有什么解决办法吗 Z X Y 在我看来 这是一个很容易研究的问题 第一个结果 htt
  • 使用 ViewModel 中的多态性绑定到 XAML 中带有参数的方法

    我的 ResultView 中有一个带有六个选项卡的 TabControl 位于此视图后面的 ViewModel 可以是 ResultTypeOneViewModel 或 ResultTypeTwoViewModel 它们均派生自 Resu
  • Puppeteer 中的多浏览器与多选项卡

    我有 100 个网页 必须测试运行时错误 我发现 Puppeteer 插件可以 毫不费力 地做到这一点 但我遇到了一个困境 启动一个带有多个选项卡的浏览器 或者为每个链接创建一个新的浏览器 在这种情况下最好的方法是什么 我听说 在有多个选项
  • 为什么我的 Google 地图 API 密钥无效?

    这是我的第一个问题 我在研究中没有找到答案 我在旧网站 不是我的网站 上的 google 地图 API 密钥出现问题 tao yin com 法国气功协会 有两个月的时间 我为这个网站做了一张地图 在两个地方 Here http www t
  • 如何在 ncurses 中获得亮白色?

    如何初始化浅灰色背景和亮白色前景的颜色对 init pair number COLOR WHITE COLOR WHITE 创建一个具有浅灰色前景和背景的颜色对 但我需要前景是真正的白色 我尝试将 COLOR WHITE 与 A BLINK
  • 如何在 Rails webpacker 3 中使用 jQuery

    我生成一个新的 Rails 应用程序 rails new titi webpack vue 并想使用 jQuery 或其他库 如 popper vue resource 我尝试过了yarn add jquery这很好 但我无法在 JavaS
  • Gitlab6.0和Apache2

    请问如何使用Apache2设置Github 6 0 按照原来的说明安装Gitlab Unicorn rb 中的调整 listen home git gitlab tmp sockets gitlab socket backlog gt 64
  • python 使用图像谷歌图像进行搜索

    我在用 python 搜索谷歌图像搜索时遇到了非常困难的情况 我需要只使用标准 python 库 所以 urllib urllib2 json 有人可以帮忙吗 假设图像是 jpeg jpg 并且位于我运行 python 的同一文件夹中 我尝
  • Angular + ui-router:$stateChangeSuccess 在状态 b 上触发,但不在 a.b 上触发

    用户界面路由器 0 2 11 AngularJS 1 3 0 我很难理解为什么 BarCtrl 中的 stateChangeSuccess 事件处理程序没有在 foo bar 上触发 它在 bar 上触发 foo bar gt Consol