访问模板化小部件外的dojo附加点

时间:2013-08-29 10:03:26

标签: dojo ibm-mobilefirst

我有一个用于列表项的dojo附加点,它位于模板化小部件内。我需要访问小部件外部的dojo附加点,以便将onclick分配给模板创建的列表项。我该怎么办?

2 个答案:

答案 0 :(得分: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"时。但是,我不认为建议以这种方式使用它,因为现在您的小部件紧密耦合(您使用小部件的内部功能)。

答案 1 :(得分: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")
};