angular ui router:component $ onInit在路由更改时触发两次

我使用angular-ui-router 0.2.18,角度为1.5.x. 我无法解释为什么我的组件$ onInit激发两次(我不认为它与我的问题有关,但我也使用webpack)。

我的路由:

myModule.config(function ($stateProvider) {

    $stateProvider
    .state('app.project', {
        abstract: true,
        url: '/project',
        template: '<ui-view/>'
    })

    .state('app.project.demo', {
        url: '/demo',
        template: '<my-component></my-component>'
    });

});

我的组件的准系统版本:

myModule.component('myComponent', {
    template: require('./my-component.html'),
    bindings: {},
    controller: function () {

        this.alert = function () {
            console.log("fires");
        };

        this.$onInit = function () {
            this.alert();
        };

    }
});

在我的应用程序某处,路由更改由<a ui-sref="app.project.demo"></a>触发。

当我点击链接时, alert功能会触发两次,但当我重新加载页面时不会触发。 也许控制器在路由改变时加载了两次?

我已经尝试了这个SO问题中列出的所有内容:与angularjs-executed-controller-twice进行交锋,但没有成功。

但是,真正困惑我的是,当我重命名我的状态名而不改变别的时候,问题就消失了:

  • 'app.project.demos'作品
  • 'app.projects.demo'可以工作(当然,在将'app.project'改为'app.projects'之后)
  • 什么可能是解释?

    链接地址: http://www.djcxy.com/p/77951.html

    上一篇: angular ui router: component $onInit fires twice on route change

    下一篇: $locationChangeSuccess doesn't wait for route resolve