如何在Dojo工具包的当前JS文件中使用在另一个JS文件中创建的对话框变量

33qvvth1  于 2022-12-08  发布在  Dojo
关注(0)|答案(1)|浏览(145)

我已经在AddButtonEntryPoint.js文件中创建了对话框,我想在Form.js文件中访问该变量,以便在单击“提交”按钮后隐藏对话框。
下面是我编写的代码。

添加按钮入口点.js

var w = new Form({});

        var d = new Dialog({
            id: 'FormDialog',
            title: "Bridge Form",
            style: "width: 270px; height: 270px;",
            content: w,
            onHide: function() {
                // To prevent destroying the dialog before the animation ends
                setTimeout(lang.hitch(this, 'destroyRecursive'), 0);
            }
        });
            d.show();
        };

表单.js

return declare( "mypackage.MyForm", Form, {
    repotextbox: new TextBox({
        name: "text",
        placeHolder: "Enter text here."
    } , dojo.doc.createElement('input')),

    DFMtextbox: new TextBox({
        name: "text",
        placeHolder: "Enter text here."
    } , dojo.doc.createElement('input')),

    submitButton: new Button({
        type: "submit",
        label: "Submit"
    }),

    constructor: function(args) {
        declare.safeMixin(this, args);
    },

    onSubmit: function() { 
        var repositoryID = this.repotextbox.get('value');
        xhr("https://samples.openweathermap.org/data/2.5/weather?q={repositoryID}",{ 
            // The URL of the request 
           method: "GET", 
            handleAs: "json", 
           }).then(
              function(data){ 

                alert(data.success + " " + JSON.stringify(data)); 
              }, 
              function(err){ 
              alert( "Your message could not be sent, please try again."); 
              });
    },    
});

});
在form.js文件中,在onSubmit函数下,我必须隐藏用户单击Submit按钮时在AddButtonEntryPoint.js中创建的对话框。

2fjabf4q

2fjabf4q1#

在Form.js中,必须添加一个将引用Dialog示例的属性

return declare( "mypackage.MyForm", Form, {
    myDialog: null, 
    // etc
}

然后在AddButtonEntryPoint中,您可以在初始化w时设定这个属性,如果您将它放在:

var d = new Dialog({
            id: 'FormDialog',
            title: "Bridge Form",
            style: "width: 270px; height: 270px;",
            content: w,
            onHide: function() {
                // To prevent destroying the dialog before the animation ends
                setTimeout(lang.hitch(this, 'destroyRecursive'), 0);
            }
        });

        var w = new Form({
            myDialog: d
        });

或者您可以保持它的原样并在以后调用w.set("myDialog", d);-但是在这种情况下postCreate中需要该对话框的任何代码都不会运行。
希望这对你有帮助!

相关问题