我正在重写这个问题,以便更容易回答(我希望)。我希望在类(原型)中有一个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();
};
这不是闪光的,但可行。