我们是否可以使用谷歌闭包创建一个带有复选框和组合框的对话框

Can we create a dialog box with a checkbox and a combobox using google closure

本文关键字:复选框 一个 组合 对话框 可以使 是否 谷歌 闭包 创建 我们      更新时间:2023-09-26

我正在尝试创建一个对话框,其中包含复选框,用户名和角色组合框,只有在选中复选框时才会启用。我有在 jsp 页面上运行的基本代码,但如何让它在对话框中工作?所有组件都使用谷歌闭包呈现。

我的 js 文件

function combox ()
    {
    goog.events.listen((goog.dom.getElement('switch')), goog.events.EventType.CLICK,
            function(e) {
            var request = new goog.net.XhrIo();
            var cb = new Array();
       goog.events.listen(request, "complete", function(e){
        var xhr = /** @type {goog.net.XhrIo} */ (e.target);
        res = xhr.getResponseJson();
        var mycount = count(res.myrole);
        var content = new Array();
            var userlist = new Array();
            for(var k=0;k<mycount;k++)
            {
                content[k] = res.myrole[k].role;
            }
            var mycount1 = count(res.myusers);
            for(var l=0;l<mycount;l++)
            {
                userlist[l] = res.myusers[l].user;
            }
            var child = new Array();
            var container = goog.dom.getElement('c'); 
            for(var m=0;m<userlist.length;m++)
            {
              child[m] = goog.dom.createDom('div',{'id':'user'+(m+1)},userlist[m]);
              cb[m] = new goog.ui.ComboBox();
              cb[m].setUseDropdownArrow(true);
            for(var n=0;n<content.length;n++)
            {
              cb[m].addItem(new goog.ui.ComboBoxItem(content[n]));;
            }
            cb[m].render();
            goog.dom.append(container, child[m]);
    });
    });
}
function count(obj) {
   var count=0;
   for(var user in obj) {
      if (obj.hasOwnProperty(user)) {
         ++count;
      }
   }
   return count;
}

我从我的 servlet 中得到了正确的响应,但我希望在一个对话框中使用这些组件(即从我的 servlet 检索到的每个用户的复选框、用户名和一个组合框。

你应该考虑使用 goog.ui.Dialog - http://docs.closure-library.googlecode.com/git/class_goog_ui_Dialog.html

这是如何使用一个的演示: http://closure-library.googlecode.com/git/closure/goog/demos/dialog.html

实例化一个后,您将使用 setContent 方法将表单放置为对话框的内容 html。

您还可以扩展 goog.ui.editor.AbstractDialog 类 ( http://docs.closure-library.googlecode.com/git/class_goog_ui_editor_AbstractDialog.html ),它有助于管理对 goog.ui.Dialog 的内部引用,而不是直接创建一个,并提供方便的hideshow方法。

__

作为旁注,它通常被视为Javascript中的反模式,使用"new Array()"语法而不是var userList = [];,原因在这里和其他地方指定。