Dojo 自定义小部件中的dijit小部件--处理它们的事件
JS: templates/MainViewWidget.html:Dojo 自定义小部件中的dijit小部件--处理它们的事件,dojo,Dojo,JS: templates/MainViewWidget.html: define(["dojo/_base/declare","dojo/dom", "dijit/_Widget", "dijit/_TemplatedMixin", "dojo/text!./templates/MainViewWidget.html", "dijit/layout/TabContainer", "dijit/layout/ContentPane","dijit/layout/Borde
define(["dojo/_base/declare","dojo/dom",
"dijit/_Widget", "dijit/_TemplatedMixin",
"dojo/text!./templates/MainViewWidget.html",
"dijit/layout/TabContainer", "dijit/layout/ContentPane","dijit/layout/BorderContainer","dijit/form/TextBox", "dijit/layout/AccordionContainer"],
function(declare, dom, _Widget, _TemplatedMixin, template){
return declare("package.MainViewWidget", [_Widget, _TemplatedMixin], {
widgetsInTemplate: true,
templateString: template,
constructor: function(){
},
startup: function(){
},
search: function(evt){
alert('hi');
alert(evt);
}
});
});
问题是,我想在文本框中捕捉事件。正如您可以从数据dojo attach event=onchange:'search'中看到的那样,我希望只使用标记来实现这一点。我已经尝试了很多不同的方法,但都无法成功。基本上,我想要的是在JS中定义一个函数,并将其作为处理程序附加到标记中。请帮忙 试试看:
<div class="mainContainer">
<div data-dojo-type="dijit.layout.BorderContainer" data-dojo-props="design:'sidebar', gutters:true, liveSplitters:true" style="width:100%;height:100%;">
<div data-dojo-type="dijit.layout.ContentPane" data-dojo-props="region:'left', splitter:true">
<h2>List of trips</h2>
<br />
<input type="text" data-dojo-type="dijit.form.TextBox" data-dojo-props="placeHolder:'Search...'" data-dojo-attach-event="onchange:'search'"/>
<br />
</div>
<div data-dojo-type="dijit.layout.TabContainer" data-dojo-attach-point="tabContainerDiv" data-dojo-props="region: 'center', tabPosition: 'top', tabStrip:'true', style:'width:80%;height:100%'">
<div data-dojo-type="dijit.layout.ContentPane" title="Summary" data-dojo-props="selected:'true', title:'About'">Welcome. Navigate through the Left pane.</div>
</div>
</div>
</div>
Camelcase onChange,搜索周围没有引号。遗憾的是,这不受支持。我花了两个小时才发现这个。模板中任何具有data dojo type属性的节点都会被_TemplatedMixin忽略。\u attachTemplateNodes请参阅。换句话说,数据dojo attach事件将只绑定到普通DOM节点,而不是DIJIT
这至少适用于v1.8。附加处理在v1.9中是不同的,因为有一个,所以它可能在那里工作。您在dojo 1.10中尝试过吗?它在我的小部件中工作。
data-dojo-attach-event="onChange:search"