Select 如何加上「;选择";是否以编程方式在dojo tooltipdialog内容中?

Select 如何加上「;选择";是否以编程方式在dojo tooltipdialog内容中?,select,dojo,tooltip,Select,Dojo,Tooltip,我想在dijit/TooltipDialog中显示dojoselect。动态加载dojoselect的项。所以我想添加这个选择程序。TooltipDialog的内容可以是对象,但select需要保存一个domNode。代码是: <head> <script> require([ "dojo/parser", "dijit/form/Select", "dijit/Tooltip

我想在dijit/TooltipDialog中显示
dojoselect
。动态加载
dojoselect
的项。所以我想添加这个
选择
程序。TooltipDialog的内容可以是对象,但select需要保存一个domNode。代码是:

<head>
    <script>
        require([
            "dojo/parser",
            "dijit/form/Select",
            "dijit/TooltipDialog",
            "dojo/on",
            "dojo/dom",
            "dojo/_base/lang",
            "dijit/popup",
            "dojo/data/ObjectStore",
            "dojo/store/Memory",
            "dojo/domReady!"
        ], function(parser,Select,TooltipDialog,on,dom,lang,popup, ObjectStore, Memory){
            parser.parse();
            var t={mySel:null};



            var store = new Memory({
                data: [
                    { id: "foo", label: "Foo" },
                    { id: "bar", label: "Bar" }
                ]
            });

            var os = new ObjectStore({ objectStore: store });

            t.mySel = new Select({
                store: os
            }, "ttt");
            var myTooltipDialog = new TooltipDialog({
                content: t,
                onMouseLeave: function(){
                    popup.close(myTooltipDialog);
                }
            });
            on(dom.byId("mmm"),"mouseover" ,lang.hitch(this,function(e){

                popup.open({
                    popup: myTooltipDialog,
                    orient: ["above-centered","above","below"],
                    around:dom.byId('mmm')

                });
                t.mySel.startup();
            }));
            t.mySel.on("change", function(){
                console.log("my value: ", this.get("value"))
            })

        })
    </script>

</head>
<body class="claro">

    <div id="ttt"  >  tttt</div><br>
    <div id="mmm"  >  tttt</div><br>
</body>

要求([
“dojo/parser”,
“dijit/form/Select”,
“dijit/TooltipDialog”,
“dojo/on”,
“dojo/dom”,
“dojo/_base/lang”,
“dijit/popup”,
“dojo/data/ObjectStore”,
“dojo/store/Memory”,
“dojo/domReady!”
],函数(解析器、选择、工具提示对话框、打开、dom、lang、弹出、对象存储、内存){
parser.parse();
var t={mySel:null};
var存储=新内存({
数据:[
{id:“foo”,标签:“foo”},
{id:“bar”,标签:“bar”}
]
});
var os=新的ObjectStore({ObjectStore:store});
t、 mySel=新选择({
商店:os
}“ttt”);
var myTooltipDialog=新建TooltipDialog({
内容:t,,
onMouseLeave:function(){
弹出.关闭(myTooltipDialog);
}
});
on(dom.byId(“mmm”),“mouseover”,lang.hitch(this,function(e)){
打开({
弹出:myTooltipDialog,
方向:[“居中上方”、“上方”、“下方”],
around:dom.byId('mmm')
});
t、 mySel.startup();
}));
t、 mySel.on(“更改”,函数(){
log(“我的值:”,this.get(“值”))
})
})
tttt
tttt

您正在为工具提示内容而不是节点分配对象

因此,尝试做出以下改变:

var myTooltipDialog = new TooltipDialog({
    content: t.mySel.domNode,
    onMouseLeave: function() {
        popup.close(myTooltipDialog);
    }
}

你需要这样的smt吗?你能详细说明你的问题吗?你几乎答对了。只需将行
content:t,
更改为
content:t.mySel,
。它应该会起作用。但是,当您尝试使用鼠标更改下拉列表中的选项时,会发生onMouseLeave事件,您将无法更改它。不过,你可以用键盘来更改选项。正如@TKambi所建议的那样,
content:t.mySel
将创造奇迹。此外,如果您要将选择放置在工具提示中,则无需将其放置在DOM中即可创建它。非常感谢,它可以正常工作。如果我有更多的控件,例如:两个单选按钮和一个选择按钮。如何在tooltipdialog中添加它们以及如何在对话框中布局它们?此外,如何避免在选择更改时触发onMouseLeave事件?