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

pau*_*sit 5 components controller angularjs angular-ui-router

我使用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>'
    });

});
Run Code Online (Sandbox Code Playgroud)

我的组件的准系统版本:

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

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

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

    }
});
Run Code Online (Sandbox Code Playgroud)

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

alert单击链接时该函数会触发两次,但重新加载页面时则不会触发.可能控制器在路由更改时加载了两次?

我已经尝试了在这个SO问题上列出的所有内容:打击 - angularjs-执行 - 控制器 - 两次,但没有成功.

真正令我困惑的是,当我重命名我的州名而不改变其他任何东西时,问题就消失了:

  • 'app.project.demos' 作品
  • 'app.projects.demo'工作太(改变后'app.project''app.projects'当然)

可能是什么解释?