以下是我的打字稿角度控制器。我想要一个方法在每次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次执行的。我需要看守员吗?我怎么能这样做?
提前致谢
答案 0 :(得分:1)
如果您正在使用uiRouter收听$stateChangeSuccess
事件:
constructor(private scope: any, private common: app.core.Common, private myService: app.data.IRepositoryClass) {
scope.$on('$stateChangeSuccess', () => this.getFromDB());
}
旁注将您的依赖项标记为private
而不是公开是一种很好的做法。