Google app maker 以编程方式设置OnDetach事件处理程序

Google app maker 以编程方式设置OnDetach事件处理程序,google-app-maker,Google App Maker,我正在构建的应用程序使用一个外部库,。它对计时器很有用。我使用一个HTML小部件来显示计时器启动后经过的时间,因此它如下所示: 它真的很管用!我唯一的问题是,当页面分离时,我需要停止计时器;这是因为记录将被更改,因此计时器需要重新启动。不这样做会导致与计时器冲突 在HTML小部件onAttach事件中,我有以下内容: //start running timer in the HTML widget var runningTimer = new Timer(); runningTimer.sta

我正在构建的应用程序使用一个外部库,。它对计时器很有用。我使用一个HTML小部件来显示计时器启动后经过的时间,因此它如下所示:

它真的很管用!我唯一的问题是,当页面分离时,我需要停止计时器;这是因为记录将被更改,因此计时器需要重新启动。不这样做会导致与计时器冲突

在HTML小部件onAttach事件中,我有以下内容:

//start running timer in the HTML widget
var runningTimer = new Timer();
runningTimer.start({precision: 'seconds', startValues: {seconds: startSeconds}});
runningTimer.addEventListener('secondsUpdated', function (e) {
  $('#timerDiv').html(timerRun.getTimeValues().toString());
});

//attach event listener to page onDetach event to stop timer
widget.root.getElement().addEventListener("unload", function(){
    runningTimer.stop();
    console.log("Timer stopped");
)};
代码的上半部分工作正常,下半部分什么也不做。我已经研究了这个问题,但没有任何迹象表明这是否可能

我有一种感觉,这可能是不可能的,我开始发疯;尽管如此,我还是想咨询一下这里的专家,以防有一个解决方案,而我只是还没有找到


感谢您在这件事上的宝贵时间和意见,提前感谢

到目前为止,无法以编程方式设置OnDeach事件处理程序;尽管如此,我还是通过在页面上实现自定义属性为您找到了一个可能的解决方案。在本例中,我使用了一个Dynamic类型的属性,并将其命名为“Timer”。我没有为此实现Jquery库,而是使用了HTML小部件选项。以下是html小部件onAttach事件代码:

//start running timer in the HTML widget
widget.root.properties.Timer = new Timer();
var runningTimer = widget.root.properties.Timer;
runningTimer.start({precision: 'seconds', startValues: {seconds: 0}});
runningTimer.addEventListener('secondsUpdated', function (e) {
  widget.html = runningTimer.getTimeValues().toString();
});
widget.root.properties.Timer.stop();
以下是转速表事件代码的页面:

//start running timer in the HTML widget
widget.root.properties.Timer = new Timer();
var runningTimer = widget.root.properties.Timer;
runningTimer.start({precision: 'seconds', startValues: {seconds: 0}});
runningTimer.addEventListener('secondsUpdated', function (e) {
  widget.html = runningTimer.getTimeValues().toString();
});
widget.root.properties.Timer.stop();

希望这对您有用,或者让您朝着正确的方向前进。

到目前为止,无法通过编程方式设置OnDeach事件处理程序;尽管如此,我还是通过在页面上实现自定义属性为您找到了一个可能的解决方案。在本例中,我使用了一个Dynamic类型的属性,并将其命名为“Timer”。我没有为此实现Jquery库,而是使用了HTML小部件选项。以下是html小部件onAttach事件代码:

//start running timer in the HTML widget
widget.root.properties.Timer = new Timer();
var runningTimer = widget.root.properties.Timer;
runningTimer.start({precision: 'seconds', startValues: {seconds: 0}});
runningTimer.addEventListener('secondsUpdated', function (e) {
  widget.html = runningTimer.getTimeValues().toString();
});
widget.root.properties.Timer.stop();
以下是转速表事件代码的页面:

//start running timer in the HTML widget
widget.root.properties.Timer = new Timer();
var runningTimer = widget.root.properties.Timer;
runningTimer.start({precision: 'seconds', startValues: {seconds: 0}});
runningTimer.addEventListener('secondsUpdated', function (e) {
  widget.html = runningTimer.getTimeValues().toString();
});
widget.root.properties.Timer.stop();

希望这对您有用,或者让您朝着正确的方向前进。

这是一个很难回答的问题,但我如何将此库导入App Maker?我本来打算亲自尝试一下,看看是否能想出一个解决方案。@MarkusMalessa信息在这里,我想让我澄清一下,您是否将库的URL放入App Maker外部资源JavaScript URL中,如果是,URL是什么,或者您是否将其放入应用程序启动脚本中?@MarkusMalessa啊,您的意思是。这是库的url,这是一个很难回答的问题,但是我如何将这个库导入App Maker?我本来打算亲自尝试一下,看看是否能想出一个解决方案。@MarkusMalessa信息在这里,我想让我澄清一下,您是否将库的URL放入App Maker外部资源JavaScript URL中,如果是,URL是什么,或者您是否将其放入应用程序启动脚本中?@MarkusMalessa啊,您的意思是。这是图书馆的url老实说,我从来没有使用过动态属性,所以我不知道如何使用它。谢谢你。我学到了一些新的东西。@Morfinismo我开始频繁地实现它,因为在App Maker中实现全局类型变量似乎是不切实际的,甚至是不可能的。我相信这就是为什么您的代码可能没有在分离事件中工作,因为您运行的计时器没有被识别为全局的,而不是特定于小部件的。这是关于AppMaker,我仍在努力解决的一个问题。我找到了一个解决方案。我使用的是
window.runningTimmer=nullif(runningTimmer){runningTimmer.stop();}
。不过,我更喜欢你的解决方案。老实说,我从来没有使用过动态属性,所以我不知道如何使用它。谢谢你。我学到了一些新的东西。@Morfinismo我开始频繁地实现它,因为在App Maker中实现全局类型变量似乎是不切实际的,甚至是不可能的。我相信这就是为什么您的代码可能没有在分离事件中工作,因为您运行的计时器没有被识别为全局的,而不是特定于小部件的。这是关于AppMaker,我仍在努力解决的一个问题。我找到了一个解决方案。我使用的是
window.runningTimmer=nullif(runningTimmer){runningTimmer.stop();}
。不过,我更喜欢你的解决方案。