更改网址时调用typescript方法

时间:2016-09-20 14:35:33

标签: javascript angularjs typescript

以下是我的打字稿角度控制器。我想要一个方法在每次url更改时触发(即使是url的一小部分,例如数字)。

我制作了我想要触发的方法,我在控制器中有一个构造函数。我怎么知道何时触发该方法以及我需要在何处调用它?在构造函数里面初始化它?

这是我的控制器代码:

private returnedClass: Class;
    static $inject: Array<string> = ['$scope', 'common', 'repository.class'];
    constructor(public scope: any, public common: app.core.Common, public myService: app.data.IRepositoryClass) {           
    }           
    getFromDB(): void{
        if (location.href.indexOf("classAdd") !== -1 && typeof this.common.itemId !== 'undefined' && this.common.itemId != null)
        {
          this.myService.getClassById(this.common.itemId).then((returnedItem: Class) => {
              this.returnedClass = returnedItem;
              console.log(this.returnedClass);
            });
        }
    }
}
angular
    .module('app.layout')
    .controller('HeaderNavigationController', HeaderNavigationController);

我想提一下,当加载整个HTML DOM(index.html)时,这个控制器是1次执行的。我需要看守员吗?我怎么能这样做?

提前致谢

1 个答案:

答案 0 :(得分:1)

如果您正在使用uiRouter收听$stateChangeSuccess事件:

constructor(private scope: any, private common: app.core.Common, private myService: app.data.IRepositoryClass) {    

    scope.$on('$stateChangeSuccess', () => this.getFromDB());
} 

旁注将您的依赖项标记为private而不是公开是一种很好的做法。