$ locationChangeStart从未广播过; $ browser.onUrlChange在页面加载后从未调用过

时间:2014-05-27 20:50:32

标签: angularjs

我的角度应用程序是非标准的,因为我们不使用路由提供程序或UI路由器。我们使用durandal风格的导航,使用$ http。

交换视图
  1. locationChangeStart永远不会激发我认为,因为我们没有在SPA中更改我们的URL(尽管我们计划将来这样做)。我无法对此进行测试,但是如果我们保留在SPA中并且我们将URL更改为指向通过代码的新视图(同样,不使用routeProvider / UiRouter)我应该期望此事件被触发吗?

  2. 我的主要问题是我无法处理这些事件:手动网址更改,后退/前进/历史记录按钮,外部链接点击

  3. 我看到$ browser #onUrlChange是广播$ locationChangeStart事件的函数,但该函数仅在我加载页面加载时被调用,但它似乎正是应该被调用的代码。

    文档:

    $浏览器#onUrlChange    

    • 只有在从角度外部更改网址时才会调用它:
    •    
    • 用户在地址栏中输入不同的网址
    •    
    • 用户点击历史记录(前进/后退)按钮
    •    
    • 用户点击链接
    • 当$ browser.url()方法更改网址时未调用

    它说这部分也是:    

    • 注意:此api仅供$ location服务使用。请使用{@link ng。$ location $ location service}来监控角度应用中的网址更改。

    我不知道如何'使用$ location服务来监控网址更改',所以我正在收听$ locationChangeStart事件:

    $rootScope.$on('$locationChangeStart', function(event, next, current) {
        // Breakpoint hit here on page load only 
        var x = 0;
    }
    

    为什么不为我运行onUrlChange / $ locationChangeStart函数?

    谢谢!

0 个答案:

没有答案