0
我正试图在下面的代码中使用watch.js。这个想法也是以一种方式运行watch.js,因此它检测到(vars.in_animation的)布尔变化,然后解开并退出。但是,会发生什么情况是代码陷入了无限循环,每次vars.in_animation都会触发监视回调,并且监视代码永远不会运行。使用watch.js解开对象的问题
我不知道问题是我使用watch.js的方式,还是在代码结构中存在其他问题。有任何想法吗?
base.goTo = function(targetSlide){
if (vars.in_animation || !api.options.slideshow)
{
//arrange for a callback once in_animation is false again
//only need to detect first change from true to false, and then unwatch
watch(vars, "in_animation", function()
{
console.log('called back, value of in_animation ' + vars.in_animation);
unwatch(vars,"in_animation",vars.alert); //never called
base.goTo2(vars.saved_slide);
});
vars.saved_slide = targetSlide;
return false;
}
else { base.goTo2(targetSlide); }
}
编辑,刚才提出的问题的小提琴>http://jsfiddle.net/SZ2Ut/3/
var obj = {
name: "buddy",
alert: function(){
alert(obj.phrase + " " + obj.name);
}
}
watch(obj, "name", function(){
alert('name has changed to: ' + obj.name);
});
//should only fire once for this one
obj.name = "johnny";
unwatch(obj, "name", obj.alert);
obj.name = "phil";
谢谢你,有点卡住了.. – rix