Google app maker 如何修复appmaker中超出最大调用堆栈大小的错误

Google app maker 如何修复appmaker中超出最大调用堆栈大小的错误,google-app-maker,Google App Maker,我目前正在验证一个日期框小部件,以防止在30天宽限期后提交。日期验证正在工作,但在警报提示后,它没有下降(我在这里库存,即使在点击几下)。此外,日期框不会变为空 function checkDateValidate(widget) { var form = app.pages.Newitem.descendants; var otdate = form.otDateBox.value; var date = new Date(); var pastdate = date.set

我目前正在验证一个日期框小部件,以防止在30天宽限期后提交。日期验证正在工作,但在警报提示后,它没有下降(我在这里库存,即使在点击几下)。此外,日期框不会变为空

function checkDateValidate(widget) {
  var form = app.pages.Newitem.descendants;
  var otdate = form.otDateBox.value; 
  var date = new Date();
  var pastdate = date.setDate(date.getDate() - 31);

  if(otdate <= pastdate) {
    alert('Date exceeds within 30 days grace period is invalid.');
    form.otDateBox.value = null;
  }
}
函数checkDateValidate(小部件){
var form=app.pages.Newitem.subjects;
var otdate=form.otDateBox.value;
变量日期=新日期();
var passdate=date.setDate(date.getDate()-31);

if(otdate此错误有时会发生,因为存在无限循环,这是您的情况。了解onValueChange事件处理程序和onValueEdit事件处理程序之间的差异非常重要

值更改时的

每当此小部件的value属性更改时,此脚本将在客户端上运行。可以使用参数小部件引用小部件,并且小部件的新值存储在newValue中

值编辑上的按钮

每当用户编辑此小部件的值时,此脚本将在客户端上运行。可以使用参数小部件引用小部件,并且小部件的新值存储在newValue中。与onValueChange()不同,它仅在用户更改小部件的值时运行;它不会响应绑定或以编程方式设置值时运行


为什么会这样? 由于您的逻辑是在onValueChange事件处理程序上设置的,因此每当dateBox小部件值更改时,甚至是以编程方式更改时,都会触发该逻辑;因此,
form.otDateBox.value=null;
会一次又一次地触发该逻辑。之所以一次又一次地触发该逻辑,是因为o您的比较逻辑:

if(otdate <= pastdate)

if(otdate有时会发生此错误,因为存在无限循环,这就是您的情况。了解onValueChange事件处理程序和onValueEdit事件处理程序之间的差异非常重要

值更改时的

每当此小部件的value属性更改时,此脚本将在客户端上运行。可以使用参数小部件引用小部件,并且小部件的新值存储在newValue中

值编辑上的按钮

每当用户编辑此小部件的值时,此脚本将在客户端上运行。可以使用参数小部件引用小部件,并且小部件的新值存储在newValue中。与onValueChange()不同,它仅在用户更改小部件的值时运行;它不会响应绑定或以编程方式设置值时运行


为什么会这样? 由于您的逻辑是在onValueChange事件处理程序上设置的,因此每当dateBox小部件值更改时,甚至是以编程方式更改时,都会触发该逻辑;因此,
form.otDateBox.value=null;
会一次又一次地触发该逻辑。之所以一次又一次地触发该逻辑,是因为o您的比较逻辑:

if(otdate <= pastdate)

if(otdate)谢谢!这是一个很大的帮助,我终于解决了我的问题。将关注事件差异。竖起大拇指!谢谢!这是一个很大的帮助,我终于解决了我的问题。将关注事件差异。竖起大拇指!