- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
虽然我搜索了解决方案,但没有找到适合我的问题的解决方案。我正在使用 cordova 和 jquery mobile。触发事件:document.ready 和 cordova 的设备就绪。我想通过检查 bool 值来检查加载状态,以了解何时启动主应用程序。
看看我的代码:
首先:加载的第一个 js 文件:
function checkReadyStates() {
if(domReady && cordovaReady) {
timer.stop();
start();
}
}
var domReady = false;
var cordovaReady = true;
var timer = new TimerModel({interval : 50, method : checkReadyStates});
timer.start();
// get notified when DOM is loaded
$(document).ready(function() {
ConsoleController.info('Document ready.');
domReady = true;
});
// get notified when cordova is ready
document.addEventListener('deviceready', function() {
ConsoleController.info('Cordova loaded.');
cordovaReady = true;
}, false);
第二个:TimerModel:
define(['backbone'],function(Backbone) {
var model = Backbone.Model.extend({
defaults: {
timerObject : null,
active : false,
interval : 1000,
method : null,
},
// init timer
initialize : function() {
_.bindAll(this, 'start', 'stop'); // context bindings
},
// starts the timer with given interval
start : function() {
if(!this.active) {
this.active = true;
this.timerObject = setInterval(this.method, this.interval);
}
},
// stops timer
stop : function() {
this.active = false;
clearInterval(this.timerObject);
}
});
// return the timer model
return model;
});
希望有人能提供帮助。谢谢!
最佳答案
这行代码在这里
this.timerObject = setInterval(this.method, this.interval);
this.method
和 this.interval
都是undefined
,所以你没有设置运行 < em>从不。这样做的原因是 Backbone.Model
没有在实例本身的构造函数中定义传递的属性,而是在名为 attributes
的内部属性中定义。您可以使用 model.get(property)
方法访问属性:
this.timerObject = setInterval(this.get('method'), this.get('interval'));
此外,将计时器定义为模型并没有多大意义。毫无疑问,您会让它工作,但这不是 Backbone.Model
的目的。模型用于表示一段数据
,而不是功能。我认为一个简单的函数在这里会更好地为您服务。
编辑:换句话说,模型不仅仅是数据,但它们应该包含数据。该模型是定义操作该数据的函数(方法)的好地方。另一方面,您的 TimerModel
是纯逻辑 - 它不代表或封装任何数据或状态。我觉得把逻辑封装成一个简单的函数“类”比较好:
var Timer = function(options) {
options = options || {};
this.active = false;
this.interval = options.interval || 1000;
this.method = options.method || null;
// starts the timer with given interval
this.start = function() {
if(!this.active) {
this.active = true;
this.timerObject = setInterval(this.method, this.interval);
}
};
// stops timer
this.stop = function() {
this.active = false;
clearInterval(this.timerObject);
};
_.bindAll(this, 'start', 'stop')
});
用法:
var timer = new Timer({interval: 50, method:checkReadyStates});
关于javascript - Backbone.js 计时器 - 无用的 setInterval 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14600709/
哇,我一直在尝试让一个简单的 Android Twitter 应用程序运行,但这是不可能的。我来自 iOS 背景。我目前正在努力使这些工作: 来自 Marakana 的 MyTwitter 应用程序。
我只花了几个小时调试一个编译器错误,如果编译器的错误消息更有用,我可以立即修复这个错误。 我把它简化为一个简单的例子: template int f(int); template auto g(U
我想调整我的线条(两条)的大小,因为我觉得它们太瘦了。 下面的代码这样做了,但是为 size 创建了一个图例,这是无用的,因为 size 没有可以映射到它的变量。 qplot(date,value,d
如果我这样做 xset dpms 600 3600 7200 ,它在 10 点后使我的屏幕空白 几分钟的不事件。 问题 X11 怎么知道我闲了多久,我怎么才能访问这个 以编程方式空闲时间? 我无法获得
在调查 ConflictError ( see this previous question ) 时,我看到了很多 persistent.mapping.PersistentMapping 冲突。 具
我正在使用 PHP 和 jQuery 创建交互式白板应用程序。创建一个卡片组不是问题,也不是在页面上应用 Canvas 覆盖以便我可以在上面写字。我是一名业余编码员,完全是自学成才。这部分是学习更多的
我是网页设计的自学者,所以我可能会错过一些基础编码。 所以问题是 内容在一行中从右边溢出了 div。 代码如下 HTML
我在将 DRF SessionAuthentication 与定义为 ModelViewSets 的 View 一起使用时遇到问题。 “LoginRequiredMixin”在泛型 View 中工作正
这是我的一段代码:输出看起来像:12、44、55,我需要删除最后一个“,”,我尝试了所有方法。 while ((r = scanf("%d", &v)) > 0){ printf("%
我正在做这样的事情 http://jsfiddle.net/8ErSL/2/ 当您将鼠标悬停在任何文本框 (div) 上时,其中会出现一个小图标。 我想阻止图标的淡入淡出效果在我不小心将鼠标悬停在 d
我使用“wget --mirror [sitename]”启动了一个 wget 镜像,它是工作正常,但意外中断了该过程。 我现在想恢复镜像,但有以下警告: 如果 wget 已经下载了一个文件,我不想下
我有一个包含多个子项的 DOM 元素 (#installations),其中只有一个具有类 .selected。我需要选择此类和其余的前 3 个 (:not(.selected)) 并显示它们 - 目
我是一名优秀的程序员,十分优秀!