处理类内的事件(原型)



我正在重写这个问题,以便更容易回答(我希望)。我希望在类(原型)中有一个Button,但我希望处理程序也在类中。如果处理程序在类外,但在类内找不到它,则工作正常。

提前感谢您的帮助。

function myWindow(message) {  
  this.SS = SpreadsheetApp.getActiveSpreadsheet(); 
  this.App = UiApp.createApplication();
  this.App.setTitle(message);
  this.Panel = this.App.createVerticalPanel();
  this.App.add(this.Panel);
  this.Button = this.App.createButton('OK', this.App.createServerHandler('handler'));
};
myWindow.prototype = {
  constructor: myWindow,
  handler: function (e) 
  {
    Browser.msgBox('Click');
  },
  show: function()
  {
    this.Panel.add(this.Button);
    this.SS.show(this.App);
  }
};
function Run() {
  var theWindow = new myWindow('Hello World');
  theWindow.show();
}

当我点击OK按钮时,我得到的错误是"Script function not found handler"

好的,我已经读了很多书,虽然没有明确说明,但createServerHandler似乎只是为全局函数设计的,UIAPP中没有提供其他功能。这意味着我所要求的无法实现。

解决方案必须看起来像

function myWindow(message) {  
  this.SS = SpreadsheetApp.getActiveSpreadsheet(); 
  this.App = UiApp.createApplication();
  this.App.setTitle(message);
  this.Panel = this.App.createVerticalPanel();
  this.App.add(this.Panel);
  this.Button = this.App.createButton('OK', this.App.createServerHandler('handler'));
}
myWindow.prototype = {
  constructor: myWindow,
  show: function() {
    this.Panel.add(this.Button);
    this.SS.show(this.App);
  }
};
function handler(e) {
  Browser.msgBox('Click');    
  };
function Run() {
  var theWindow = new myWindow('Hello World');
  theWindow.show();
};

这不是闪光的,但可行。

相关内容

  • 没有找到相关文章

最新更新