事件无法处理模板化的dojo小部件

时间:2015-08-05 14:09:32

标签: javascript dojo

我的小部件制作表单但是发生的事件不会发生。当单击该按钮时,它应该获取输入框中的值,然后将其放入正在请求的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>

1 个答案:

答案 0 :(得分:0)

您的活动必须

data-dojo-attach-event="onClick:_onClick"

在按钮上。

同样对于请求的返回,您将不得不使用dojo.hitch来阻止它。 http://jsfiddle.net/theinnkeeper/qum452gm/