事件不适用于模板化的 dojo 小部件
Event not working on templated dojo widget
我的小部件制作了表格,但应该发生的事件却没有。单击按钮时,它应该获取输入框中的值,然后将其放入请求的 URL 中,然后将该页面粘贴到结果中 div.
编辑注意: 发现如果我有没有 dijit 按钮类型的 searchNode,事件有效,但如果我应用 dojo-data-type,它不会。
小部件:
/**
* Widget for creating a quick search form.
*/
define([
"dojo/_base/declare",
"dojo/request",
"dijit/_WidgetBase",
"dijit/_OnDijitClickMixin",
"dijit/_TemplatedMixin",
"dijit/_WidgetsInTemplateMixin",
"dijit/form/Button",
"dijit/form/TextBox",
"dojo/text!./templates/quickSearch.html"
],function(declare, request, _WidgetBase, _OnDijitClickMixin, _TemplatedMixin, _WidgetsInTemplateMixin, Button, TextBox, template){
return declare("js/widget/SASearch", [_WidgetBase, _OnDijitClickMixin, _TemplatedMixin, _WidgetsInTemplateMixin], {
// set our template
templateString: template,
// some properties
baseClass: "searchWidget",
// define an onClick handler
_onClick: function() {
var query = this.queryNode.value;
alert(query);
request("quick/" + query).then(
function(text) {
this.resultsNode.innerHTML = text;
alert(text);
},
function(error) {}
);
}
});
});
模板:
<div class="${baseClass}">
<div class="${baseClass}Query" data-dojo-attach-point="queryNode" data-dojo-type="dijit/form/TextBox"></div>
<div class="${baseClass}Search" data-dojo-attach-point="searchNode" data-dojo-type="dijit/form/Button" data-dojo-attach-event="ondijitclick:_onClick">Search</div><br />
<div class="${baseClass}Results" data-dojo-attach-point="resultsNode"></div>
</div>
您的活动必须是
data-dojo-attach-event="onClick:_onClick"
在按钮上。
另外,对于请求中的 returns,您将不得不使用 dojo.hitch 来解决这个问题。
http://jsfiddle.net/theinnkeeper/qum452gm/
我的小部件制作了表格,但应该发生的事件却没有。单击按钮时,它应该获取输入框中的值,然后将其放入请求的 URL 中,然后将该页面粘贴到结果中 div.
编辑注意: 发现如果我有没有 dijit 按钮类型的 searchNode,事件有效,但如果我应用 dojo-data-type,它不会。
小部件:
/**
* Widget for creating a quick search form.
*/
define([
"dojo/_base/declare",
"dojo/request",
"dijit/_WidgetBase",
"dijit/_OnDijitClickMixin",
"dijit/_TemplatedMixin",
"dijit/_WidgetsInTemplateMixin",
"dijit/form/Button",
"dijit/form/TextBox",
"dojo/text!./templates/quickSearch.html"
],function(declare, request, _WidgetBase, _OnDijitClickMixin, _TemplatedMixin, _WidgetsInTemplateMixin, Button, TextBox, template){
return declare("js/widget/SASearch", [_WidgetBase, _OnDijitClickMixin, _TemplatedMixin, _WidgetsInTemplateMixin], {
// set our template
templateString: template,
// some properties
baseClass: "searchWidget",
// define an onClick handler
_onClick: function() {
var query = this.queryNode.value;
alert(query);
request("quick/" + query).then(
function(text) {
this.resultsNode.innerHTML = text;
alert(text);
},
function(error) {}
);
}
});
});
模板:
<div class="${baseClass}">
<div class="${baseClass}Query" data-dojo-attach-point="queryNode" data-dojo-type="dijit/form/TextBox"></div>
<div class="${baseClass}Search" data-dojo-attach-point="searchNode" data-dojo-type="dijit/form/Button" data-dojo-attach-event="ondijitclick:_onClick">Search</div><br />
<div class="${baseClass}Results" data-dojo-attach-point="resultsNode"></div>
</div>
您的活动必须是
data-dojo-attach-event="onClick:_onClick"
在按钮上。
另外,对于请求中的 returns,您将不得不使用 dojo.hitch 来解决这个问题。 http://jsfiddle.net/theinnkeeper/qum452gm/