当前位置: 首页 > 面试题库 >

为什么从未调用$ routeChangeSuccess?

夏侯航
2023-03-14
问题内容

我正在我的应用程序上执行以下操作,但是我无法获取routeChangeSuccess事件。

var myapp = angular.module('myapp', ["ui.router", "ngRoute"]);

myapp.controller("home.RootController",
  function($rootScope, $scope, $location, $route) {
    $scope.menus = [{ 'name': 'Home ', 'link': '#/home'}, {'name': 'services', 'link': '#/services'} ]

    $scope.$on('$routeChangeSuccess', function(event, current) {

      alert('route changed');
    });

  }
);

myapp.config(
  function($stateProvider, $urlRouterProvider, $routeProvider) {
    $urlRouterProvider.otherwise("/home");
    $stateProvider
      .state('home', {
        url: "/home",
        //template: '<h1>Home Screen</h1>'
        templateUrl: "/Client/Views/Home/Home.htm"
      })
      .state('services', {
        url: "/services",
        //template: '<h1>Service screen</h1>'
        templateUrl: "/Client/Views/Home/service.htm"

      });
  });

如下所示的非常简单的html也会失败

  <body ng-controller="home.RootController">

    <ul class="nav">
      <li ng-repeat="menu in menus" "="">
        <a href="{{menu.link}}">{{menu.name}}</a>
      </li>
    </ul>
    <div ui-view> No data yet!</div>
  </body>

但是,当我单击链接时,我看到视图正在更新,但是从未触发$ routeChangeSucces事件。

有什么我想念的吗?

*我遇到的 *另一个问题 是,可以挂接一个事件以知道视图已准备好,这样我就可以开始一些其他处理,例如document.ready()。

plnlr但不能完全正常工作…

问候基兰


问题答案:

请检查此Wiki:状态更改事件。摘录:

  • $ stateChangeSuccess-状态转换完成后触发。

$ scope。$ on(’$ stateChangeSuccess’,
function(event,toState,toParams,fromState,fromParams){…})

因此,而不是$routeChangeSuccess使用$stateChangeSuccess

要获取有关所有可用事件的更多详细信息,请查看Wiki Events。
在这里,您会发现最适合您的活动可能是$viewContentLoaded



 类似资料:
  • 问题内容: 在过去的两天里,我试图 理解 Java如何处理图形,但是在此方面却惨败。我的主要问题是确切了解如何/何时调用paint()(或较新的paintComponent())。 在下面的代码中,我将看到何时创建事物,除非我自己手动添加对它的调用或JFrame.paintAll()/ JFrame.paintComponents()的调用,否则永远不会调用paintComponent()。 我将

  • 我有一个JPA@Entity类,它现在已经使用@Prepersisted很长一段时间了。今天,我想在需要实体ID的地方添加一些功能。这个ID是在持久化过程中由数据库中的HIBERNATE_SEQUENCE生成的。它通常设置在em.persist(实体)之后。

  • 我不知道为什么我的GETendpoint被调用,但我的POSTendpoint不工作。当我调用时,它成功地返回 但是当我打电话的时候 我一直得到这样的回应: 这是我的密码

  • 我有一个SQS队列,用作Lambda函数的事件源。由于DB连接限制,我将Lambda函数的最大并发设置为5。 在正常情况下,一切正常,但是当我们需要进行更改时,我们故意禁用SQS触发器。消息按预期开始在SQS队列中备份。 当触发器被重新启用时,5个Lambda函数被实例化,并开始处理队列中的消息,但是我也看到CloudWatch告诉我Lambda被限制了。 有人能解释一下为什么会这样吗?我希望可用

  • 问题内容: 我偶然发现了一个问题,可以总结如下: 当我手动创建线程(即通过实例化)时,将适当地调用它。但是,当我与一起使用时,处理程序将被忽略。我错过了什么? 我期望:消息“未捕获的异常…”的三倍 我得到:消息一次(由手动创建的线程触发)。 在Windows 7和Mac OS X 10.5上用Java 1.6复制。 问题答案: 因为异常不会被捕获。 您的ThreadFactory生成的线程没有直接

  • 问题内容: 我通过扩展和实现和创建了自己的Android帐户身份验证器。其中的某些方法由调用,而其他方法则没有。 这很好用: 当我打电话给我时,问题就发生了。AccountManager不会调用我在中定义的方法。它调用其他一些默认方法,该方法仅在启动之前检查是否存在。 这是行不通的。它没有调用我的方法: AuthenticatorService 我创建了服务并定义了。否则不应该工作。 编辑: 我在