[英]Custom widget with widgetlist and data-dojo-attach-event on children
[英]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.