为什么angularJs的$watch只运行一次
why angularJs $watch only run once
代码在手表中只运行一次。我该怎么修理它?
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);
所以这个问题的可能原因是$watch
在控制器启动时无法在视图中找到该元素。要使$watch
绑定/工作,元素应该已经存在于视图中。
我猜,你一定是在使用ng-if
。ng-if
只在条件为真时才产生元素。
我遇到过这个问题两次,删除ng-if
两次都有效。
这是一个在ES5上工作的例子,如果我没记错的话,我看到你在用ES6。
然而,这不应该影响$watch
的工作
$scope.$watch('tabType', function (newValue, oldValue) {
console.log(newValue);
console.log(oldValue);
});
开头的this
也不需要$watch
希望对你有帮助
相关文章:
- 使用每500ms运行一次的jquery函数是个好主意吗
- For循环在Jquery中只运行一次
- 谷歌图表在运行应用程序时只能显示一次
- 使函数只运行一次(Javascript)
- 更改路由后,运行一次js脚本
- 只运行一次提取的脚本
- 可能只在for循环内部运行一次代码块
- 在单击事件中,第一次单击时激发代码一次,其余代码在所有单击时运行
- 在Flask中使用.getJSON请求时,只运行一次命令
- 运行“;非“;单击另一个函数中的函数仅一次
- JavaScript只有在最后一次被调用时才运行函数
- 数据互绑定问题:转换器只运行一次,无法绑定元素的 ID
- 您可以在节点.js上一次运行多个应用程序吗?
- 如何一次运行一次循环javascript
- 从命令行一次运行大量摩卡测试的好方法是什么
- 如何让 JavaScript 一次运行一个字符串
- 无法在一次运行中删除多个数组元素
- 如何使jquery函数一次运行一个
- 在一次运行中分配并返回一个变量
- 一次运行2个动画