从嵌套函数访问函数属性
Accessing of functions properties from nested functions
从嵌套函数访问函数属性时遇到问题。我肯定我错过了什么,但在谷歌上搜索了3个小时后,我不知道该找什么。背景:我想在angularjs中添加一个控制器,在一定时间后重新加载页面。我的问题是从"this.reloadTicker()"访问"this.enabled"。重命名控制器功能然后访问它们的想法是行不通的。一种解决方案是将所有内容存储在"$scope"中,但有更好的解决方案吗?
我的代码:
ctrls.controller("reloaderCtrl", function reloader($scope) {
this.enabled = true;
this.paused = false;
this.maxSecs = 30;
this.secs = 30;
this.reloadTicker = function() {
if (reloader.enabled && !reloader.paused) {
if (reloader.secs > 0) {
reloader.secs--;
} else {
reloader.reload();
reloader.secs = reloader.maxSecs;
}
$scope.$apply();
}
setTimeout(this, 1000);
}
this.reload = function() {
$scope.$emit('doReload');
}
setTimeout(this.reloadTicker, 1000);
});
您需要在一些变量中捕获this
:
ctrls.controller("reloaderCtrl", function ($scope) {
var vm = this;
vm.enabled = true;
vm.paused = false;
vm.maxSecs = 30;
vm.secs = 30;
vm.reloadTicker = function() {
if (vm.enabled && !vm.paused) {
if (vm.secs > 0) {
vm.secs--;
} else {
vm.reload();
vm.secs = vm.maxSecs;
}
$scope.$apply();
}
setTimeout(this, 1000);
}
vm.reload = function() {
$scope.$emit('doReload');
}
setTimeout(vm.reloadTicker, 1000);
});
PS。我建议使用Angular $timeout
而不是setTimeout
(https://docs.angularjs.org/api/ng/service/$timeout)
PSS。我建议你去看看约翰·帕帕的《角度风格指南》。这是一本非常好的读物(https://github.com/johnpapa/angular-styleguide)
相关文章:
- 从嵌套函数访问函数属性
- Javascript嵌套函数属性继承
- Javascript-在全局作用域中调用本地函数/属性
- 正在重置原型对象的构造函数属性
- javascript函数属性设置器中的延迟
- jQuery插件返回this.each并为每个对象添加函数属性
- 从函数属性访问对象属性;不适用于Firefox
- 当使用“”创建时保留函数属性;绑定”;
- 在多个(html)元素上循环执行相同的JavaScript函数属性更改
- 如何将新的构造函数属性推送到数组
- 通过构造函数属性和运算符实例设置继承
- 角度表达式无法使用构造函数属性分辨变量类型
- 为什么要在函数定义之外引用静态变量(函数属性)
- Javascript“构造函数”属性中的错误 - IE 8
- 为什么浏览器支持对象的隐式函数属性
- 构造函数属性值应该是什么 .a 原型构造函数或对象构造函数本身
- 使用模块模式调用函数属性
- React 组件流类型检查中的可选函数属性失败
- 是否可以在 javascript 中的对象文字上定义函数属性
- JavaScript:如何捕获对象的任何缺失函数/属性