代码只运行一次。 我该怎么办呢?
this.$rootScope.$watch('tabType', () => {
if (this.$rootScope["tabType"] === TabType.Sent) {
this.$scope.refreshSentList();
} else if (this.$rootScope["tabType"] === TabType.Archive) {
this.$scope.refreshArchiveList();
} else if (this.$rootScope["tabType"] === TabType.Inbox) {
this.$scope.refreshInboxList();
} else if (this.$rootScope["tabType"] === TabType.Snooz) {
this.$scope.refreshSnoozList();
} else if (this.$rootScope["tabType"] === TabType.Trash) {
this.$scope.refreshTrashList();
}
},true);
答案 0 :(得分:2)
因此,这个问题的可能原因是$watch
在控制器启动时无法在视图中找到该元素。对于$watch
绑定/工作,元素应该已经存在于视图中。
我的猜测 - 您必须在视图中使用ng-if
。并且ng-if
仅在条件为真时才创建元素。
我两次遇到这个问题,并且两次都删除了ng-if
。
答案 1 :(得分:0)
这是一个在ES5上运行的示例,如果我没错,我会看到你使用ES6。
然而,这不应影响$watch
的工作方式
$scope.$watch('tabType', function (newValue, oldValue) {
console.log(newValue);
console.log(oldValue);
});
开头的this
也是$watch
希望这能帮到你