我有一个列表项的 dojo 附加点,它位于模板化小部件内部。我需要访问小部件外部的 dojo 附加点,以便将 onclick 分配给模板创建的列表项。我该怎么做?
问问题
1354 次
2 回答
2
好吧,如果你想给它附加一个事件处理程序,你必须提供一个函数。您可以使用 getter 和 setter 从外部覆盖函数/属性。
data-dojo-attach-event
如果您只需要节点来附加事件处理程序,我还建议使用。例如通过使用:data-dojo-attach-event="onclick: myFunction"
。通过这样做,它需要myFunction
在您的模板化小部件中调用一个函数,提供一个默认函数(在您的小部件中),例如:
myFunction: function() {
/** Stub */
},
然后你可以从外面做这样的事情:
myWidget.set("myFunction", function(evt) {
console.log("Someone clicked on the list item");
});
因为myFunction
事件处理程序被覆盖,它将执行setter中提供的函数。
您还可以使用以下方法直接从外部访问连接点:
myWidget.listItemNode
当你有一个data-dojo-attach-point="listItemNode"
. 但是,我认为不建议以这种方式使用它,因为现在您的小部件是紧密耦合的(您使用小部件的内部功能)。
于 2013-08-29T10:44:28.653 回答
0
HTML template:-
<div data-dojo-attach-point="infoDialog" >
</div>
Save this as "Template.html"
---------------------------------------------
load this html file using "dojo\text" plugin in your widget i.e.
"dojo/text!./templates/Template.html",
and store as template in widget main function
-----------------------------------------------
assign it as template string to the widget.
templateString: template,
now this template attachpoint(infoDialog) will be the part of your current widget scope.
-----------------------------------------------
attach event:-
this.infoDialog.onclick=function(){
alert("hello world")
};
于 2013-08-29T10:46:54.393 回答