dojo templatedmixin内部小部件事件行为

dojo templatedmixin内部小部件事件行为,dojo,Dojo,观察: 在我制作的自定义小部件的模板中,有一行: <input type="text" data-dojo-props="placeHolder:'Search...'" data-dojo-attach-event="onchange: search"/> 这可以很好地工作,因为在on change中,我的小部件的搜索功能被调用。但显示器是普通的输入框,而不是dijit的花哨显示器。所以我这样做: <input type="text" data-dojo-type="di

观察:

在我制作的自定义小部件的模板中,有一行:

<input type="text"  data-dojo-props="placeHolder:'Search...'" data-dojo-attach-event="onchange: search"/>
这可以很好地工作,因为在on change中,我的小部件的搜索功能被调用。但显示器是普通的输入框,而不是dijit的花哨显示器。所以我这样做:

<input type="text" data-dojo-type="dijit.form.TextBox" data-dojo-props="placeHolder:'Search...'" data-dojo-attach-event="onchange: search"/>
现在,显示正常,但更改时不调用搜索。现在我做到了:

<input type="text" data-dojo-type="dijit.form.TextBox" data-dojo-props="placeHolder:'Search...'" data-dojo-attach-event="onchange: random_name"/>
整个页面崩溃,调试器告诉我dojo在作用域中找不到函数random_name

要给出完整的代码,它们是:


编辑:代替onchange,我尝试了onchange、ondijitchange或任何其他事件,如“onclick”、“onclick”、“ondijitclick”等,但无论我在浏览器中做什么,都不会调用search。

在dijit中,事件名称是onchange

Api:

仔细查看您的代码,我可能会从模板中删除附加事件,并使用将其添加到小部件js文件的“启动”函数中

以“MainViewWidget.js”代码和模板标记为例,下面是我将尝试的修改:

首先,模板更改

<input type="text" data-dojo-type="dijit.form.TextBox" data-dojo-props="placeHolder:'Search...'" data-dojo-attach-point="inputNode"/>
define(["dojo/_base/declare","dojo/dom",
        "dijit/_Widget", "dijit/_TemplatedMixin",
        "dojo/text!./templates/MainViewWidget.html",
        "dojo/on",
        "dijit/layout/TabContainer", "dijit/layout/ContentPane","dijit/layout/BorderContainer","dijit/form/TextBox", "dijit/layout/AccordionContainer"],

function(declare, dom, _Widget, _TemplatedMixin, template, on){
    return declare("package.MainViewWidget", [_Widget, _TemplatedMixin], {

    // widgetsInTemplate: true, /*keep this false, otherwise data-dojo-attach-event attribute is a pain in the ass!*/

    templateString: template,

    constructor: function(){
    },

    startup: function(){
        on(this.inputNode, "change", function(){//or just have your search function here instead
             alert('hi');
        });
    }
  });
});
如果要在“on”处理程序中使用“this”引用小部件,则可能需要对事件处理程序使用dojo

希望这有帮助,我没有任何打字错误