簡體   English   中英

如何運行data-dojo-attach-event?

[英]How can I make a data-dojo-attach-event run?

我試圖以編程方式添加domNode后運行該事件:

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

首次加載頁面時Dojo不會解析此事件,因為稍后會添加該頁面。 即使跑完了之后

parser.parse();

該事件未運行。 如何讓這個活動運行?

您不希望dojo解析器對頁面進行兩次解析:它將冗余地解析並創建已創建的內容並導致混亂。 要在解析頁面后以編程方式添加節點,請查看dojo / dom-construct

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);
    });

將document.body替換為要插入節點的父節點的引用,並查看第3個參數以了解放置選項。

您應該使用onclick:openRegistration而不是click:openRegistration

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

如果沒有看到你們其余的代碼,我就會發現你有一個范圍問題。 或者你還沒有正確地設置dom事件 - onClick

您的函數需要是同一個小部件的一部分,該小部件使用帶有繼承_TemplatedMixin的 attach-events的模板。 使用該attach-event的小部件看起來應該是這樣的

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
        }
    });
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM