如何以编程方式在 dojo 工具提示对话框内容中添加 "select"?

How to add "select" in dojo tooltipdialog content programmatically?

我想在 dijit/TooltipDialog 中显示 dojo selectdojo select 的项目是动态加载的。所以我想以编程方式添加这个 selectTooltipDialog的内容可以是一个对象,但是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>

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

所以尝试做出这些改变:

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