我有一个指令MenuTabsComponent:
public $onInit() {
console.log(this.$state.current.name);
setTimeout(() => {
console.log(this.$state.current.name);
}, 500);
}
问题在于此代码在所有状态数据可用之前就已执行。如果我在没有setTimeout的情况下运行代码,则$state.name
是不正确的。
dashboard.tasks.overview.details
dashboard.tasks.overview.details.information
但是setTimeout不是正确的解决方案。如何等待状态数据可用?
答案 0 :(得分:2)
您可以将state.name分配给变量,然后使用$ scope。$ watch来检测更改。
$scope.name = this.$state.current.name;
$scope.$watch(name, function (newValue, oldValue) {
});
您还可以检查oldValue以查看其是否为空,并仅在oldValue为null时才执行代码以执行一次功能。
$scope.$watch(name, function (newValue, oldValue) {
if(oldValue == null){
//execute your function
}
});