Javascript 如何运行数据dojo attach事件?

Javascript 如何运行数据dojo attach事件?,javascript,dojo,dom-events,Javascript,Dojo,Dom Events,我尝试在以编程方式添加domNode后运行该事件,如下所示: <a href="javascript:void(0)" data-dojo-attach-event="click:openRegistration">Register</a> 事件未运行。如何运行此事件?您应该使用onclick:openRegistration而不是单击:openRegistration <a href="javascript:void(0)" data-dojo-attach-e

我尝试在以编程方式添加domNode后运行该事件,如下所示:

<a href="javascript:void(0)" data-dojo-attach-event="click:openRegistration">Register</a>

事件未运行。如何运行此事件?

您应该使用
onclick:openRegistration
而不是
单击:openRegistration

<a href="javascript:void(0)" data-dojo-attach-event="onclick:openRegistration">Register</a>

在看不到其他人的代码的情况下,我很抱歉您的范围有问题。或者您没有正确设置dom事件的大小写-onClick

您的函数需要是使用带有继承的附加事件的模板的同一小部件的一部分。使用该附加事件的小部件应该如下所示

require([
    'dojo/declare',
    'dijit/_WidgetBase', 
    'dijit/_TemplatedMixin', 
    'dojo/text!myNameSpace/templates/MyWidget.html'
], 
function(declare, _WidgetBase, _TemplatedMixin, template){
    declare('MyWidget', [ _WidgetBase, _TemplatedMixin ], {
        templateString: template, 
        openRegistration: function {
               // do stuff here
        }
    });
});

您不希望dojo解析器对页面进行两次解析:它将冗余地解析和创建已经创建的内容,并造成混乱。要在解析页面后以编程方式添加节点,请查看


将document.body替换为对要插入节点的父节点的引用,并查看第三个参数中的放置选项。

它不起作用。在他们的文档中,您可以使用
click
事件而不是
onclick
dijit。_WidgetsInTemplateMixin指定文档中的数据dojo attach event=“onclick”引用我尝试了这两种方法,但都不起作用。这就是我刚才提到的参考:我从服务器上收到这条消息,我只是简单地将它插入其中,这意味着Dojo已经呈现了页面。正是我想知道的答案,我们如何使用openRegistration函数传递一些数据?openRegistration将以Dojo规范化事件作为参数。这样,您就可以访问触发事件的节点和小部件,这可能就足够了。如果没有,则,
dojo/_base/lang.hitch
或function.bind绑定
openRegistration会查看小部件,以便它可以检索所需的任何数据<代码>单击:lang.hitch(这是openRegistration),。然后openRegistration可以访问所有小部件数据。您还可以将参数传递给lang.hitch,它们将混合在对openRegistration的调用中:然后,正常的dojo事件参数将最后出现。
require([
    'dojo/declare',
    'dijit/_WidgetBase', 
    'dijit/_TemplatedMixin', 
    'dojo/text!myNameSpace/templates/MyWidget.html'
], 
function(declare, _WidgetBase, _TemplatedMixin, template){
    declare('MyWidget', [ _WidgetBase, _TemplatedMixin ], {
        templateString: template, 
        openRegistration: function {
               // do stuff here
        }
    });
});
require(["dojo/dom-construct", "dojo/domReady!"],
    function(domConstruct) {

        var openRegistration = function() {
            alert("foo");
        }

        domConstruct.create("a", {
            innerHTML: "Register",
            click: openRegistration,
            href: "javascript:void(0)"
        }, document.body);
    });